题目:
LeetCode 206. Reverse Linked List
思路:
链表的问题说简单也简单, 但是手写代码时也挺容易出错的,主要考验对边界问题的处理.
单链表反转我觉得重点在于头节点的后继指针指向null
其次循环中的逻辑就比较简单了:
- 保存临时后继结点
- 把指针指向前驱结点
- 指定当前结点为前驱, 后继结点为当前, 进行下一个结点的反转
代码实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
class solution { public ListNode reverseList(ListNode head) { ListNode currNode = head; ListNode prevNode = null; ListNode nextTemp = null; while (currNode.next != null) { nextTemp = currNode.next; currNode.next = prevNode; prevNode = currNode; currNode = nextTemp; } return prev; } }
|