线性表
Posted 进步一丢点everyday
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线性表相关的知识,希望对你有一定的参考价值。
线性表List:零个或多个数据元素的有限序列
首先它是一个序列,是有顺序的。然后是有限的。
线性表的顺序顺序存储结构
描述顺序存储结构的三个属性:
在任何时刻,线性表的长度应该小于数据的长度。
线性表的顺序存储结构,在存,读数据时,不管在哪个位置,时间复杂度都是O(1);而插入和删除时,时间复杂度都是O(n)
线性表顺序存储结构的优缺点
优点:
-
无须为表示表中元素之间的逻辑关系而增加额外的存储空间
-
可以快熟地存取表中任一位置的元素
缺点: -
插入和删除操作需要移动大量元素
-
当线性表长度变化较大时,难以确认空间的容量
-
造成存储空间的碎片
线性表的链式存储结构
以前在顺序结构中,每个数据元素只需要存数据元素信息就行了,现在链式结构中,除了要存数据元素信息以外,还要存储它的后继元素的存储地址。因此为了表述每个数据元素ai与其直接后继数据元素ai+1之间的逻辑关系,对数据ai来说,除了存储其本身的信息外,换簇拥存储一个指示其直接后继的信息(即直接后继的存储位置)。把存储数据元素信息的域称为数据域,把存储直接后继位置的域称为指针域。指针域中存储的信息称为指针或者链。这两部分信息组成数据元素ai的存储映像,称为结点。
链表的第一个结点的存储位置叫做头指针,之后的每一个节点,其实就是上一个的后继指针指向的位置。那么最后就意味着直接后继不存在了,所以规定线性链表的最后一个结点指针为“空”通常用NULL或者^符号表示。
结点由存放数据元素得数据域和存放后继结点地址的指针域组成,假设p是指线性表第i个元素的指针,则该节点ai的数据域我们可以用p—>data来表示,p->data的值是一个数据元素,结点ai的指针域可以用p->next来表示,p->next的值是一个指针。p->next指向的是第n+1个元素,即指向ai+1的指针,也就是p->data = ai,则p->next ->data = ai+1
单链表的插入
单链表的删除
对于插入和删除数据越频繁的操作,单链表的效率优势就越是明显。
单链表的整表创建
思路
有两种方法分别为头插法和尾插法。大致的原理相同。
单链表的整表删除
思路:
静态链表
概念:用数组描述的链表叫做静态链表
循环链表
概念:将单链表中终端结点的指针端由空指针改为指向头结点,就使整个单链表形成一个环,这种头尾相接的单链表称为单循环 链表,简称循环链表(circular linked list)
双向链表
概念:(double linked list)是在单链表的每个结点,在设置一个指向其前驱结点的指针域。所以双向指针中的结点都有两个指针域,一个指向直接后继,另一个指向直接前驱。
就像人生一样,想享乐就得先努力,与收获就得付出代价
- 双向链表插入时:
双向链表删除时:
总结
以上是关于线性表的主要内容,如果未能解决你的问题,请参考以下文章