数据结构之线性表
2011-08-22 22:34
183 查看
在数据结构中共有四种结构类型:
集合:集合中的所有对象之间均没有内存的联系性,他们只是散列的排在一起,隶属于同一个集合
线性表:线性表表示了对象之间的一对一关系;
树: 树结构表示了对象之间的一对多关系;
图:图结构表示了对象之间的多对多关系;
本篇文章主要说明对线性表的逻辑操作和物理存储结构:
线性表中的对象除了头结点和尾结点,都只有一个前驱和后继,其中头结头没有前驱,尾结点没有后继.
线性表的物理存储结构有:顺序存储和链式存储结构;其中顺序存储在内存中的分配必须是连续的,而链式存储在内存中的分配可以不是连续的,由上一个结点存储下一个结点的物理地址.
其中顺序存储结构由于在物理地址的存储是连续的,因此知道第一个结点的地址后,其它结点的地址即可通过计算得出,因此获取时的时间复杂度是O(1),但由于删除和插入时,要保持连续性,因此需要在删除时将后继所有结点往前移 ,插入后,将所有后继结点往后移,因此删除和插入时,时间复杂度为O(n).
而链式存储中由于物理地址上不是连续的,因此每个结点需要存储下一个结点的物理地址信息,如果我们要进行查找时,需要从头结点,得到下一个结点的物理地址,然后再继续往下找,直到找到我们需要的第n个结点;因此查找的时间复杂度为O(n);
但删除和插入时,只需要将当前结点的下一个结点,并从其中得到下下个结点的地址,然后将当前结点的下一个结点地址更新为下下个结点的址址即可;而插入时,只需要将当前结点中的存储的下一个结点地址更新为新插入结点地址,新插入的结点的下一个结点地址更新为,当前结点的原来的下一个结点的地址即可,因此删除和插入的时间复杂度为O(1);
在java 语言中LIst和Set接口中的对象均是线性表,其中只有arrayList属于顺序存储结构,其它如linkedlist和treeSet,hashSet均是链式存储结构.以及对应的hashMap也使用链式存储结构!
集合:集合中的所有对象之间均没有内存的联系性,他们只是散列的排在一起,隶属于同一个集合
线性表:线性表表示了对象之间的一对一关系;
树: 树结构表示了对象之间的一对多关系;
图:图结构表示了对象之间的多对多关系;
本篇文章主要说明对线性表的逻辑操作和物理存储结构:
线性表中的对象除了头结点和尾结点,都只有一个前驱和后继,其中头结头没有前驱,尾结点没有后继.
线性表的物理存储结构有:顺序存储和链式存储结构;其中顺序存储在内存中的分配必须是连续的,而链式存储在内存中的分配可以不是连续的,由上一个结点存储下一个结点的物理地址.
其中顺序存储结构由于在物理地址的存储是连续的,因此知道第一个结点的地址后,其它结点的地址即可通过计算得出,因此获取时的时间复杂度是O(1),但由于删除和插入时,要保持连续性,因此需要在删除时将后继所有结点往前移 ,插入后,将所有后继结点往后移,因此删除和插入时,时间复杂度为O(n).
而链式存储中由于物理地址上不是连续的,因此每个结点需要存储下一个结点的物理地址信息,如果我们要进行查找时,需要从头结点,得到下一个结点的物理地址,然后再继续往下找,直到找到我们需要的第n个结点;因此查找的时间复杂度为O(n);
但删除和插入时,只需要将当前结点的下一个结点,并从其中得到下下个结点的地址,然后将当前结点的下一个结点地址更新为下下个结点的址址即可;而插入时,只需要将当前结点中的存储的下一个结点地址更新为新插入结点地址,新插入的结点的下一个结点地址更新为,当前结点的原来的下一个结点的地址即可,因此删除和插入的时间复杂度为O(1);
在java 语言中LIst和Set接口中的对象均是线性表,其中只有arrayList属于顺序存储结构,其它如linkedlist和treeSet,hashSet均是链式存储结构.以及对应的hashMap也使用链式存储结构!
相关文章推荐
- 数据结构(线性表):双循环链表
- 数据结构之线性表
- Java数据结构之线性表(2)
- 数据结构1:线性表的顺序表示和实现
- 【Data】数据结构之线性表(2)
- 数据结构5:线性表中把属于la中而不属于lb中的元素放到la中
- 数据结构(线性表)
- 数据结构(11)线性表之一元多项式表示及相加
- 数据结构之线性表 -- 链表(总括)
- 数据结构之线性队列
- 数据结构基础温故-1.线性表(上)
- JAVA数据结构之线性表的链式存储结构——循环链表
- 【数据结构】顺序线性表的构造和存储数据
- 数据结构——线性结构(9)——Vector的实现过程详解
- 【数据结构】顺序线性表的几种常用方法
- 离散数据结构,线性数据结构
- 数据结构之线性表-链式存储之循环链表(三)
- 数据结构之线性表、栈、队列
- 数据结构(严蔚敏)C语言实现---线性表的顺序存储
- 数据结构之线性表(顺序表)的基本操作