定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。
示例:
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
解法:
1、定义两个指针: prepre 和 curcur ;prepre 在前 curcur 在后。
2、每次让 prepre 的 nextnext 指向 curcur ,实现一次局部反转
3、局部反转完成之后, prepre 和 curcur 同时往前移动一个位置
4、循环上述过程,直至 prepre 到达链表尾
1 /*反转链表*/ 2 public ListNode reverseList(ListNode head) { 3 ListNode cur = null, pre = head; 4 while (pre != null) { 5 ListNode nextNode = pre.next; 6 pre.next = cur; 7 cur = pre; 8 pre = nextNode; 9 } 10 return cur; 11 }
原文:https://www.cnblogs.com/0error0warning/p/13451796.html