反转链表
题目描述
输入一个链表,反转链表后,输出新链表的表头。
题目解析
从题目了解到,最后需要得到一个反转链表,并且输出链表的表头,我们知道链表的数据结构为,当前节点有下一个节点的指针,反转链表的表头就是当前链表的表尾。
代码
public class Solution {
public ListNode ReverseList(ListNode head) {
if(head == null){
return null;
}
ListNode newHead = null; //反转链表的头结点
ListNode oldHead = head; //当前链表的头结点
ListNode oldLast =null; //当前节点的上一个节点
while( oldHead != null){
ListNode pNode = oldHead.next;//当前节点的下一个节点
if(pNode == null){ //没有下一个节点时证明是当前链表的表尾
newHead = oldHead;//反转链表的表头节点等于当前链表的表尾
}
oldHead.next = oldLast;
oldLast = oldHead ;
oldHead = pNode;//向下遍历
}
return newHead;
}
}