数据结构=数据+结构,数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。
一、数据的逻辑结构:指反映数据元素之间的逻辑关系的数据结构,其中的逻辑关系是指数据元素之间的前后件关系,而与他们在计算机中的存储位置无关。
逻辑结构包括:
集合 | 数据结构中的元素之间除了“同属一个集合” 的相互关系外,别无其他关系 |
线性结构 | 数据结构中的元素存在一对一的相互关系 |
树形结构 | 数据结构中的元素存在一对多的相互关系 |
图形结构 | 数据结构中的元素存在多对多的相互关系 |
二、数据的物理结构:指数据的逻辑结构在计算机存储空间的存放形式。
数据的物理结构是数据结构在计算机中的表示(又称映像),它包括数据元素的机内表示和关系的机内表示。由于具体实现的方法有顺序、链接、索引、散列等多种,所以,一种数据结构可表示成一种或多种存储结构。
数据元素的机内表示(映像方法) | 用二进制位(bit)的位串表示数据元素。通常称这种位串为节点(node)。当数据元素有若干个数据项组成时,位串中与数据项对应的子位串称为数据域(data field)。因此,节点是数据元素的机内表示(或机内映像)。 |
关系的机内表示 (映像方法) | 数据元素之间的关系的机内表示可以分为顺序映像和非顺序映像,常用两种存储结构:顺序存储结构和链式存储结构。顺序映像借助元素在存储器中的相对位置来表示数据元素之间的逻辑关系。非顺序映像借助指示元素存储位置的指针(pointer)来表示数据元素之间的逻辑关系。 |
三、数据结构的分类:根据数据元素间关系的不同特性,通常有下列四类基本的结构: ⑴集合结构。该结构的数据元素间的关系是“属于同一个集合”。 ⑵线性结构。该结构的数据元素之间存在着一对一的关系。 ⑶树型结构。该结构的数据元素之间存在着一对多的关系。 ⑷图形结构。该结构的数据元素之间存在着多对多的关系,也称网状结构。
下面是一些常用的数据结构:
数据结构 | 优点 | 缺点 |
数组 | 插入快 | 查找慢,删除慢,大小固定,只能存储单一元素 |
有序数组 | 比无序数组查询快 | 插入慢,删除慢,大小固定,只能存储单一元素 |
栈 | 提供后进先出的存取方式 | 存取其他项很慢 |
队列 | 提供先进先出的存取方式 | 存取其他项很慢 |
线性表 | 插入快,相对于数组大小可扩展 | 查找慢,删除慢 |
链表 | 插入快,删除快 | 查找慢 |
二叉树 | 如果树是平衡的,则查找、插入、删除都快 | 删除算法复杂 |
红黑树 | 查找、删除、插入都快,树总是平衡的 | 算法复杂 |
2-3-4树 | 查找、删除、插入都快,树总是平衡的,类似的树对磁盘存储有效 | 算法复杂 |
哈希表 | 如果关键字已知,则存取极快 | 删除慢,如果不知道关键字存取慢,对存储空间使用不充分 |
堆 | 插入、删除快,对最大数据项存取快 | 对其他数据项存取慢 |
图 | 对现实世界建模 | 有些算法慢且复杂 |