1.链表
在内存中是分散存储的,通过指针相连。
种类有单链表、双链表、循环链表。
ps:虽然用python没链表哈哈
2.203移除链表元素
**用虚拟头结点处理就不用单独处理第一个结点啦
dummyhead.next = head
3.707设计链表
包括取值,插入,删除。
4.206反转链表
首先定义一个cur指针,指向头结点,再定义一个pre指针,初始化为null。
然后开始反转,首先要把 cur->next 节点用tmp指针保存一下。
接下来要改变 cur->next 的指向了,将cur->next 指向pre ,此时反转第一个节点。
接下来,循环,继续移动pre和cur指针。
最后,cur 指针已经指向了null,循环结束。 此时return pre指针,pre指针就指向了新的头结点。
5.24两两交换
注意指针顺序
6.19删除倒数第n个
快慢指针,快指针先走n步,然后快慢一起走到尾,将慢指针所在位置后一个删除(依然用了虚拟头结点)。
7.链表相交
注意是交点不是数值相等,而是指针相等!!
先分别求出长度,将长的走n步(短指针长度),再依次比较 fast == slow??
8.142环形链表
好难
fast = fast.next.next
slow = slow.next
先判断是否有环——快慢指针是否相遇
再判断环的入口——相遇时快指针的位置到入口=头结点的位置到入口(x=z)