题解 | #反转链表#
反转链表
https://www.nowcoder.com/practice/75e878df47f24fdc9dc3e400ec6058ca
package main import . "nc_tools" /* * type ListNode struct{ * Val int * Next *ListNode * } */ /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 * @return ListNode类 */ func ReverseList( head *ListNode ) *ListNode { // write code here var pre *ListNode for head != nil { next := head.Next head.Next = pre pre = head head = next } return pre }
- 使用两个辅助指针,一个指向当前需要反转指针节点的前驱节点(头结点的前驱节点为 nil,因此 prev 初始化为 nil);另一个记录下一个需要反转指针的节点。
- 使用 head 作为遍历指针,将它的 Next 域指向前驱;然后更新遍历指针为下一个待处理的节点,更新前驱为刚才的遍历节点;
- 循环结束,所有节点的 Next 域都指向它的前驱,完成反转;