反转链表

Bernie


Bernie
206. 反转链表
思路:
1.定义一个 pre 节点,一个 current 节点指向 head
2.使用 current 节点循环遍历链表,每次循环将 先将 current.next 节点缓存起来为 temp, 然后将 current.next 节点指向 pre, 然后将 pre 指向当前节点 current,最后将 current 指向缓存的 temp 节点。
typescript 解法
/**
* Definition for singly-linked list.
* class ListNode {
* val: number
* next: ListNode | null
* constructor(val?: number, next?: ListNode | null) {
* this.val = (val===undefined ? 0 : val)
* this.next = (next===undefined ? null : next)
* }
* }
*/
function reverseList(head: ListNode | null): ListNode | null {
let pre: ListNode = null;
let current: ListNode = head;
while (current != null) {
const temp: ListNode | null = current.next;
current.next = pre;
pre = current;
current = temp;
}
return pre;
}
go 解法
/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func reverseList(head *ListNode) *ListNode {
var pre *ListNode
current := head
for current != nil {
temp := current.Next
current.Next = pre
pre = current
current = temp
}
return pre
}