算法练习:NC2_中等
题目:
输入一个链表,反转链表后,输出新链表的表头。
解答
//如1->2->3->4 => 4->3->2->1
public class Solution {
public ListNode ReverseList(ListNode head) {
//看看链表是否为空
if(head == null){
return null;
}
//上一个节点pre
ListNode pre=null;
//下一个节点next
ListNode next=null;
//当前节点head
while(head != null){
//保存指向的next(因为head指向pre时会断链)
next = head.next;
//断链-转向。过程:1 2->3->4 | 1<-2 3->4 | 1<-2<-3 4 | 1<-2<-3<-4
head.next = pre;
//pre来到当前节点
pre = head;
//head去到下一个节点
head = next;
}
//返回最后一个前节点pre,即反转后链表的头节点(注:next节点为空时,反转结束)
return pre;
}
}
个人整理的笔记,仅供学习使用,有问题麻烦指正。
题目及解答思路均来源于:牛客网