大话数据结构 -03 链表


一、线性表(List)

0个或者多个数据元素的有限序列


在一个较复杂的线性表中,一个数据元素可以由若干个数据项组成

 


二、线性表抽象数据模型

  

 

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

 

使用一维数组实现顺序存储结构

  

存取时间性能为O(1)

 

四、顺序存储结构的插入与删除

获取元素的操作

 

 

注意:将指针S传给指针ElemType *e,指针S与e指向相同的地址,当函数结束后,指针e被释放(释放指的是,e不再指向之前的内存块(S指向的地方),因此跳出函数,S指针仍然能正常使用)

插入操作

 

删除操作

复杂度:

最好的情况,插入或删除最后一个元素,时间复杂度为O(1)

最坏的情况,在第一个位置插入或删除元素,时间复杂度为O(n)
平均移动次数与中间元素的移动次数相等,为(n-1)/2,因此平均时间复杂度还是O(n)


五、链式存储结构

1. 链表

链表是一种动态数据结构,每个元素为一个「结点」,由数据域与指针域组成,每个结点中的指针域指向下一个结点。Head是“头指针”,表示链表的开始,用来指向第一个结点,而最后一个指针的指针域为NULL(空地址),表示链表的结束。

单链表结构:

1 struct Node {

2 int Data;

3 struct Node *next;

4 };

 

有时为了方便地对链表进行操作,会在单链表的第一个结点前附设一个结点,称为头结点。头结点的数据域可以不存储任何信息,也可以存储线性表的长度信息等。


2. 头指针与头结点的区别

 

3. 链式存储的代码

若线性表为空表,则头结点的指针域为空。

 

仅有头指针的单链表

 

带有头结点的单链表

 

4. 单链表的读取

 

转载于:https://www.cnblogs.com/GuoXinxin/p/9969355.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值