【剑指offer】15 反转链表

题目地址:反转链表

 

题目描述                                   

输入一个链表,反转链表后,输出新链表的表头。    

题目示例                                   

输入:
{1,2,3}
返回值:
{3,2,1}

 

解法分析                                   

反转链表可以考虑使用两个结点pre和next分别记录当前节点的前一个节点和后一个结点。

当前节点不为空时,进入循环,先记录当前节点的下一个节点next的位置,再让当前节点的指针指向pre。之后结点右移,直到当前节点为空跳出循环,返回pre即可。

 

代码                                         

 1 function ReverseList(pHead)
 2 {
 3     // write code here
 4     if(pHead == null || pHead.next == null){
 5         return pHead;
 6     }
 7     var pre = null;
 8     var next = null;
 9     while(pHead != null){
10         next = pHead.next;
11         pHead.next = pre;
12         pre = pHead;
13         pHead = next;
14     }
15     return pre;
16 }

 

执行结果                                   

【剑指offer】15 反转链表

 

上一篇:C语言学生链表实现代码


下一篇:如何用C++还原经典贪吃蛇