算法学习之线性表

本文详细介绍了线性表的概念,包括顺序表和链表的特点及基本操作,并对比了它们的查询、插入、删除和遍历等操作的时间复杂度,还探讨了链表的优缺点。

线性表定义:零个或多个数据元素的有限序列 (包含顺序表和链表)

顺序表:元素的地址是连续的(其实就是数组)

链表:节点的地址不是连续的,通过指针相连

 

顺序表:查询,插入,删除,遍历

1、查询:

按位查找的时间复杂度为O(1)

按值查找的时间复杂度为O(n)

2、插入:O(n)

3、删除:O(n)

4、遍历:O(n)

 

链表:查询,插入,删除,遍历

1、查询:O(n)

对链表中的元素一次进行比较,平均性能是O(n)

2、插入:O(n)

链表的插入相当于粘贴,先粘贴上去,再拆链表。

 

s—>data = x;//将x的值存储在s中,链表是用来存储数据的,方便以后对链表值的操作

s—>next = p—>next;//先粘贴新节点到立案表上,再拆链表,不然链表就断了

p—>next = s;//s本身就是地址,p节点的next找到s,完成链表的插入操作

3、删除:时间花在遍历链表上

O(n):

1、从头开始遍历链表,找到第i-1个节点

2、将第i-1节点next指向第i个节点的next

 

第一步,先将删除节点的值取出

先拆再粘,最后全部拆掉

int x = q—>data;

p—>next = q—>next;

4、遍历:O(n)

 

链表的优缺点:

优点:

1、插入、删除不需要移动其他元素,只需要改变指针

2、链表各个节点在内存中不要求连续,空间利用率高

缺点:

查找需要遍历操作,时间利用率太低

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值