题目描述
输入一个链表,反转链表后,输出新链表的表头。
解题思路
使用三个指针,分别指向当前遍历到的结点、它的前一个结点以及后一个结点。在遍历的时候,做当前结点的尾结点和前一个结点的替换。
public class Solution {
/**
* 链表的定义
*/
private static class ListNode{
int val;
ListNode next=null;
public ListNode(int val) {
this.val = val;
}
}
public ListNode ReverseList(ListNode head){
if(head == null)
return null;
ListNode preListNode = null;
ListNode nowListNode = head;
while(nowListNode != null){
ListNode nextListNode = nowListNode.next; //保存下一个结点
nowListNode.next = preListNode; //当前结点指向前一个结点
preListNode = nowListNode; //前任结点 到现任节点
nowListNode = nextListNode; //现任节点到下一结点
}
return preListNode;
}
}
网友评论