单向链表与双向链表

内存泄漏:手动申请的空间没有得到及时释放,导致内存发生内存泄漏(循环)

        可以使用valgrind命令判断有无发生内存泄漏

快慢指针法找中间节点:

链表倒置:

 

链表插入排序:

 

单向链表与双向链表区别:

一、单向链表:

        1.单向链表的每个节点包含两部分信息:一部分是存储的数据(data),另一部分是指向列表

中下一个节点的指针(next)。这意味着在单向链表中,你只能从头节点开始,按照链表的顺序逐

个访问节点,直到到达链表的末尾(即遇到指向null的指针 )

        2.操作:

                插入:在单向链表中插入节点通常需要遍历到目标位置的前一个节点,然后修改其next

指针指向新节点,新节点的next指针再指向原位置的后一个节点。


                删除:同样需要遍历到目标节点的前一个节点,然后修改其next指针,使其跳过目标节

点,直接指向目标节点的下一个节点。


                遍历:只能从头节点开始,逐个访问每个节点,直到末尾。
                优点:实现简单,内存利用率较高(每个节点只存储一个指针)。

                缺点:只能单向遍历,某些操作(如删除中间节点)需要遍历。

三、双向链表:

        1.结构:每个节点包含三部分信息:存储的数据(data)、指向前一个节点的指针(prev)和指向下一个节点的指针(next)。这种结构允许从两个方向遍历链表。

        2.操作:

                插入:与单向链表类似,但在插入新节点时,需要同时设置新节点的prev和next指针,以及相邻节点的指针。
                删除:直接修改目标节点前后节点的指针,使其绕过目标节点。
                遍历:可以从头节点开始正向遍历,也可以从尾节点开始反向遍历。
                优点:支持双向遍历,使得某些操作(如从尾部开始遍历或删除节点)更为高效。

                缺点:相比单向链表,每个节点需要额外的指针存储空间,内存利用率稍低。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值