0%

链表入门

链表是数据结构中非常重要的结构,但是链表本身不难,难的是写代码的逻辑要清晰。

注意点

之所以首先开头就是注意点是因为,链表确实要尤为注意几点。

1. 考虑链表为空的时候
2. 每次写逻辑代码尽量在草纸上画出图案
3. 考虑是否有头结点

事实上,链表的逻辑也就是那么多,比如单链表删除一定要记得前一个节点,头插和尾插在一定程度上可以颠倒原来的数据。

只要逻辑清晰,链表只是小 case。

有无头结点

我个人是倾向于写头结点的,因为写头结点可以省很多事情,但即便是这样我还是要介绍这两种情况。

有头结点

代码

1
2
3
4
5
6
7
8
class Node:
def __init__(self,value):
self.value = value
self.next = None

class Head:
def __init__(self):
self.next = None

说明

我很可以很容易的看出
当整个链为空的时候,是 head->next = None
无论是怎么操作,只要从 head 开始就好

没有头结点

1
2
3
4
class Node:
def __init__(self,value):
self.value = value
self.next = None

说明

对于没有头结点的,第一个节点就是链的开头
当链为空的时候,没有表示
当链只有一个元素的时候,指向自己,或者 None

链的类型

对于链表来说,总的类型可以分为两类,一个是循环链表,另一个是不循环链表,又可以从另外一个角度分为单链表和双链表。

其他的链表种类,都是万变不离其宗,在此就不详细说明了。

注意点

  1. 链有它自己很大的优势,但劣势也很大,所以,具体如何使用,还需要看具体的项目是什么

  2. 尤为注意的是,链表的删除需要前一个节点。所以一般有点思考的操作,只需要两个变量,一前一后遍历即可,前面的找到目标,就可以用后面的那个变量操作。

  3. 在编写代码的时候,要注意链表为空或者为一个的特殊时候

请我喝杯咖啡吧~