题目:
反转一个单链表。
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
题解:
从前向后依次反转即可,如下所示
第一次:2->1->3->4->5
第二次:3->2->1->4->5
第三次:4->3->2->1->5
第四次:5->4->3->2->1
注意:在反转链表节点时 保存节点
prenode 首节点 、headnode 起始节点 、tempnode 为head.next。类似于从头抽牌放到起始位置。
代码实现
public class ListNode
{
public int val;
public ListNode next;
public ListNode(int x) { val = x; }
}
public class Solution
{
public ListNode ReverseList(ListNode head)
{
if(head == null)
{
return null;
}
ListNode preNode = head;
//注意循环截止条件
while(head.next != null)
{
ListNode tempNode = head.next;
head.next = tempNode.next;
tempNode.next = preNode;
preNode = tempNode;
}
return preNode;
}
}