反转链表

定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。

示例:

输入: 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     }

 

posted @ 2020-08-07 11:38  王余阳  阅读(174)  评论(0)    收藏  举报