本文由浅入深介绍链表,分为初中高级分别对待面试情形
常考知识点反转、交点、环、拆分、深度拷贝、合并
定义链表
class Node:
def __init__(self, val):
self.val = val
self.next = None
class
初级
1 链表添加
对一个链表添加元素
def init(n):
head = Node(None)
for i in range(n):
x = Node(i)
2 单链表翻转
翻转单链表,从前往后遍历 206
def reverse(head: Node):
new_head = None
while head:
tmp = head.next
head.next = new_head
new_head = head
head = tmp
return new_head
3 单链表翻转2
反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。 92
def reverse(head: Node):
new_head = None
while head:
head.next = new_head
链表交点
160