动态链表和静态链表

 我来答
舒适还明净的海鸥i
2022-06-04 · TA获得超过1.7万个赞
知道小有建树答主
回答量:380
采纳率:0%
帮助的人:69.3万
展开全部

方式一:链表通常可以使用 结构体+指针 来实现[ 动态链表 ]

这是第一种实现方式,但是这种方式有一些弊端,比如链表添加节点需要 new 一个新的 Node ,new是非常慢的过程,还消耗内存资源。算法题中链表的大小一般是100万级别,单单new出100万个节点就已经会超时了。

方式二:数组模拟链表[ 静态链表 ] 每一个节点提前准备好,没有指针的语言中可以使用

好处:快!而且普通链表的功能比如排序也都有,就是实现起来麻烦一点~。

特点:链表的实现也是可以不借助指针的。

单链表往往需要 head 来指向第一个节点;但是双链表不需要 head ,而是直接使用两个数(0,1)来表示初始左右节点,但是这两个节点里面没有值,注意idx需要从 2 开始。
Acwing: 双链表
实现一个双链表,双链表初始为空,支持 5 种操作:
在最左侧插入一个数;
在最右侧插入一个数;
将第 k 个插入的数删除;
在第 k 个插入的数左侧插入一个数;
在第 k 个插入的数右侧插入一个数
现在要对该链表进行 M 次操作,进行完所有操作后,从左到右输出整个链表。
注意:题目中第 k 个插入的数并不是指当前链表的第 k 个数。例如操作过程中一共插入了 n 个数,则按照插入的时间顺序,这 n 个数依次为:第 1 个插入的数,第 2 个插入的数,…第 n 个插入的数。

实现一个双链表,双链表初始为空,支持 5 种操作:
在最左侧插入一个数;
在最右侧插入一个数;
将第 k 个插入的数删除;
在第 k 个插入的数左侧插入一个数;
在第 k 个插入的数右侧插入一个数
现在要对该链表进行 M 次操作,进行完所有操作后,从左到右输出整个链表。
注意:题目中第 k 个插入的数并不是指当前链表的第 k 个数。例如操作过程中一共插入了 n 个数,则按照插入的时间顺序,这 n 个数依次为:第 1 个插入的数,第 2 个插入的数,…第 n 个插入的数。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式