嵌入式day38

内存泄漏:

手动申请的空间没有及时释放,导致系统发生内存泄漏

valgrind:在程序运行过程中,测试是否发生内存泄露

快慢指针法:

链表倒置:

链表插入排序:

双向链表:

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

单向链表(Singly Linked List)

  • 结构:单向链表的每个节点包含两部分信息:一部分是存储的数据(data),另一部分是指向列表中下一个节点的指针(next)。这意味着在单向链表中,你只能从头节点开始,按照链表的顺序逐个访问节点,直到到达链表的末尾(即遇到指向null的指针)。

  • 操作

    • 插入:在单向链表中插入节点通常需要遍历到目标位置的前一个节点,然后修改其next指针指向新节点,新节点的next指针再指向原位置的后一个节点。
    • 删除:同样需要遍历到目标节点的前一个节点,然后修改其next指针,使其跳过目标节点,直接指向目标节点的下一个节点。
    • 遍历:只能从头节点开始,逐个访问每个节点,直到末尾。
  • 优点:实现简单,内存利用率较高(每个节点只存储一个指针)。

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

双向链表(Doubly Linked List)

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

  • 操作

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值