通用技巧

链表中关键的技巧

虚拟头节点

dummy:=&ListNode{-1,head}
p:=head

//用p参与算法,dummy不受影响

return dummy.Next

双指针

slow, fast := head, head
slow=slow.Next
fast=fast.Next.Next
//通常用于获取链表长度,获取特定规则的节点

断点

temp:=p.Next
p.Next=nil
p=temp
//p的下个节点为nil,让节点之间断开

反转结点


var pre *ListNode //var初始化是nil,不能用pre:=&ListNode{},会导致多处一个节点

// 当前节点连接前一个节点
next:=head.Next
head.Next=pre
pre=head
head:=next


Last updated