数据结构在内存中的表示

贡献者:properties 类别:简体中文 时间:2017-01-19 11:09:03 收藏数:10 评分:0
返回上页 举报此文章
请选择举报理由:




收藏到我的文章 改错字
数据结构是计算机存储、组织数据的方式。
数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。
通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。
数据结构往往同高效的检索算法和索引技术有关。
一般认为,一个数据结构是由数据元素依据某种逻辑联系组织起来的。
对数据元素间逻辑关系的描述称为数据的逻辑结构;数据必须在计算机内存储,
数据的存储结构是数据结构的实现形式,是其在计算机内的表示;
此外讨论一个数据结构必须同时讨论在该类数据上执行的运算才有意义。
设计好的代码必须要有好的设计方法:可以更具不同的需求选择不同的方法:
比如:要想实现随机查询,那么可以选择数组(即顺序表),缺点就是删除元素的时候,
需要移动后面的元素,但是链表的删除元素就很快,效率也很高,但是查找元素就很费时,
所以选择数据的不同的组织形式(数据的在计算机里的表示形式)需要更具不同的需求。
常用数据结构
数组 (Array):在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来。
这些按序排列的同类数据元素的集合称为数组。在C语言中, 数组属于构造数据类型。
一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。
因此按数组元素的类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。
栈 (Stack):是只能在某一端插入和删除的特殊线性表。
它按照后进先出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,
需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。
队列 (Queue):一种特殊的线性表,它只允许在表的前端(front)进行删除操作,
而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。
队列中没有元素时,称为空队列。
链表 (Linked List):是一种物理存储单元上非连续、非顺序的存储结构,
数据元素的逻辑顺序是通过链表中的指针链接次序实现的。
链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。
每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。
树 (Tree):是包含n(n>0)个结点的有穷集合K,且在K中定义了一个关系N,N满足
以下条件(1)有且仅有一个结点 k0,他对于关系N来说没有前驱,称K0为树的根结点。
简称为根(root)。 (2)除K0外,k中的每个结点,对于关系N来说有且仅有一个前驱。
(3)K中各结点,对关系N来说可以有m个后继(m>=0)。
图 (Graph):图是由结点的有穷集合V和边的集合E组成。
其中,为了与树形结构加以区别,在图结构中常常将结点称为顶点,边是顶点的有序偶对,
若两个顶点之间存在一条边,就表示这两个顶点具有相邻关系。
堆 (Heap):在计算机科学中,堆是一种特殊的树形数据结构,每个结点都有一个值。
通常我们所说的堆的数据结构,是指二叉堆。堆的特点是根结点的值最小(或最大),
且根结点的两个子树也是一个堆。
散列表 (Hash):若结构中存在关键字和K相等的记录,则必定在f(K)的存储位置上。
由此,不需比较便可直接取得所查记录。称这个对应关系f为散列函数(Hash function),
按这个思想建立的表为散列表。
声明:以上文章均为用户自行添加,仅供打字交流使用,不代表本站观点,本站不承担任何法律责任,特此声明!如果有侵犯到您的权利,请及时联系我们删除。
文章热度:
文章难度:
文章质量:
说明:系统根据文章的热度、难度、质量自动认证,已认证的文章将参与打字排名!

本文打字排名TOP20

登录后可见