线性表

来源:互联网 发布:分答和知乎 编辑:程序博客网 时间:2024/06/05 19:00

1.线性表:就是数据元素的有序排列在一起组成一张表格。

(1)线性表的顺序存储结构:在存,读数据时,它的时间复杂度是O(1);

在删除和插入数据时,它的时间复杂度是O(n).

所以可知,线性表的顺序存储结构逻辑关系简单,可以快速的存取表中的任意元素。

但是当它插入 和删除元素,需要移动大量的元素,而且当线性表的长度变化较大时,难以确定存储空间的容量;容易造成存储空间的碎片。

(2)线性表的链式存储结构:解决了线性表的顺序存储结构的缺点,因为顺序存储结构元素间是没有空隙的,存储地址是连续的,所以在插入和删除

数据时,会造成大量数据元素的存储地址的变更,效率低下。

为了解决这个空隙问题,我们可以用链式存储。例如要插入一个元素,只要这个元素去找到存储区中任意一个空隙坐下来,然后将它的存储地址告诉它的上一个元素,将后一个元素的存储地址告诉这个刚插入的元素就行了。

链式存储结构图:

这里加入头节点是为了统一线性表的操作,让第一个节点和其他节点一样结构。头节点不是必须的,但是头指针是必须的,必须指向这个表的第一个节点的地址。

可以很容易知道线性表的链式存储结构特点:它的查找必须重第一个元素开始,而且必须一个接一个的遍历各节点,再有节点指针找到下个节点,因此查找的时间复杂度是O(n),读取的时间复杂度和查找一样。在删除或者插入一个元素时,涉及的元素也仅仅是这个插入或者删除的元素的前节点和后继节点的处理,改变下它们的指针

指向就ok了,简单方便,时间复杂度是O(1),在有需要频繁的插入和删除元素的操作时,采用链表的存储结构更为有效。


(3)单链表的整表创建:可以采用头插法和尾插法,循环插入,操作在定义一个头节点或者尾节点,定义一个要插入的节点,然后就改变它们的指针指向就ok了

单链表的整表删除:循环遍历各个子节点,释放各个子节点存储地址。

(4)静态链表:是一种用数组描述的链表,要叫做游标实现方法。它是给没有指针的高级语言设计的实现单链表的方式。

(5)循环链表:将单链表的终端节点的指针由空指针指向头节点就可。

(6)双向链表:其实与单向链表类似,为每一个节点添加2个指针,前驱指针指向前一个节点,后继指针指向后一个节点。

0 0
原创粉丝点击