06数据结构之链表下

2019-10-21  本文已影响0人  ssas_

本文介绍几个写链表代码技巧

1. 理解指针或引用的含义

将某个变量(对象)赋值给指针(引用), 实际上就是将这个变量(对象)的地址赋值给指针(引用),也可以反过来说,指针(yiny)中存储了这个变量的内存地址,指向了这个变量,通过指针就能找到这个变量。比如:

2. 警惕指针丢失和内存泄漏

在写链表的时候,一定要

3.利用哨兵简化实现难度
  1. 什么是“哨兵”?
    链表中的“哨兵”结点是解决边界问题的,不参与业务逻辑,如果我们引用“哨兵”结点,则不管链表是否为空,head指针都是指向这个"哨兵"结点,我们把这种有“哨兵”结点的链表成为带头链表,相反,如果没有“哨兵”结点就称为不带头链表
    2.在链表中引入“哨兵”
    “哨兵”节点不存储数据,无论链表是否为空,head指针都会指向它,作为链表的头结点始终存在。这样,插入第一个节点和插入其他节点,删除最后一个节点和删除其他节点都可以统一为相同的代码实现逻辑了。
  2. 哨兵的应用
    暂时就自己知道的,貌似有的排序的算法也可以利用(后面去详细了解一下!)
4.重点留意边界条件处理

在完成链表代码后,可以用一下几个边界条件检查代码是否正确:

5.举例画图,辅助思考
6.多写多练,没有捷径
  1. 5个常见的链表操作
    1. 单链表反转
    2. 链表中环的检测
    3. 两个有序链表的合并
    4. 删除链表倒数第n个结点
    5. 求链表的中间结点
      很多链表在逻辑上并没有什么复杂的,最重要的还是能够用代码bug free的实现出来,多写多练。
上一篇 下一篇

猜你喜欢

热点阅读