DataStructure part2 线性表

1、基本概念

线性表(List):零个或多个数据元素的有限序列。记为(a1,···,ai-1,ai,ai+1,···,an)

线性表抽象数据类型定义如下:

 

2、线性表的顺序存储结构

可用一维数组实现,如下:

1)插入操作

2)删除操作

3)顺序存储结构优缺点

优点:快速读取表中任一位置的元素

缺点:插入和删除需要移动大量元素、当线性表长度变化大时难以确定存储空间容量、造成存储空间碎片。

 

3、线性表的链式存储结构

1)结点:数据域和指针域。

头结点:数据域可为空,指针域为空时,则为空链表。

头指针:指向头结点的指针

2)获取单链表第i个结点

 3)单链表插入结点

4)单链表删除结点 

5)单链表头插法建立链表

 6)单链表尾插法建立链表

 7)清空单链表

 

4、静态链表:用数组描述链表(游标实现法)

1)初始状态(空表):

2)插入操作

i)首先将头结点游标加一(由7到8),并且得到第一个空闲游标的位子(新元素的预定位子),函数如下:

ii)插入到尾部,只需改变要游标。(若丙想插入到乙后面,该乙的游标为7,丙的游标为3就够了)

3)删除操作

 i)改末项的游标值(删除甲,则末项的游标由1变为2)

ii)回收结点并修改该空闲结点为优先插入位子,并修改头结点cursor

 

如图:

4)得到静态链表长度

5)静态链表优缺点

优点:插入删除时,较顺序表不用移动结点

缺点:没有解决连续存储分配带来的表长难以确定问题、失去了顺序存储结构随机存取的特性

 

5、循环链表

1)基本概念

将单链表的终端结点的指针域指向头结点,形成环,这种头尾相接的单链表称为单循环链表,简称循环链表。

尾指针:指向终端结点rear。

具体操作于单链表差不多,通过判断是否为头结点时判断链表结束。

 

6、双向链表

双向链表是在单链表的每个结点中在设置一个指向其前驱结点的指针域。

定义如下:

 

7、总结

 

转载于:https://www.cnblogs.com/zzzvictor/p/11097625.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值