单链表核心代码如下:

1.迭代方法:

1
2
3
4
5
6
7
8
func reverseList(node *ListNode) *ListNode {
	cur := node
	var pre *ListNode
	for cur != nil {
		cur.Next, pre, cur = pre, cur, cur.Next
	}
	return pre
}

理解:cur指向当前节点,pre是前节点初始为nil,反转过程:

1
2
3
4
next := cur.next //新建一个临时节点用于保存cur.next,不然会丢失
cur.next = pre
pre = cur
cur = next

2.递归方式

……

阅读全文