内存泄漏:手动申请的空间没有得到及时释放,导致内存发生内存泄漏(循环)
可以使用valgrind命令判断有无发生内存泄漏
快慢指针法找中间节点:
链表倒置:
链表插入排序:
单向链表与双向链表区别:
一、单向链表:
1.单向链表的每个节点包含两部分信息:一部分是存储的数据(data),另一部分是指向列表
中下一个节点的指针(next)。这意味着在单向链表中,你只能从头节点开始,按照链表的顺序逐
个访问节点,直到到达链表的末尾(即遇到指向null的指针 )
2.操作:
插入:在单向链表中插入节点通常需要遍历到目标位置的前一个节点,然后修改其next
指针指向新节点,新节点的next指针再指向原位置的后一个节点。
删除:同样需要遍历到目标节点的前一个节点,然后修改其next指针,使其跳过目标节
点,直接指向目标节点的下一个节点。
遍历:只能从头节点开始,逐个访问每个节点,直到末尾。
优点:实现简单,内存利用率较高(每个节点只存储一个指针)。
缺点:只能单向遍历,某些操作(如删除中间节点)需要遍历。
三、双向链表:
1.结构:每个节点包含三部分信息:存储的数据(data)、指向前一个节点的指针(prev)和指向下一个节点的指针(next)。这种结构允许从两个方向遍历链表。
2.操作:
插入:与单向链表类似,但在插入新节点时,需要同时设置新节点的prev和next指针,以及相邻节点的指针。
删除:直接修改目标节点前后节点的指针,使其绕过目标节点。
遍历:可以从头节点开始正向遍历,也可以从尾节点开始反向遍历。
优点:支持双向遍历,使得某些操作(如从尾部开始遍历或删除节点)更为高效。
缺点:相比单向链表,每个节点需要额外的指针存储空间,内存利用率稍低。
标签:遍历,单向,next,链表,双向,节点,指针 From: https://blog.csdn.net/chdtu/article/details/141905181