您的位置:首页 > 其它

反转链表

2019-03-17 19:22 82 查看
版权声明:如需转载,请写明出处 https://blog.csdn.net/weixin_43113679/article/details/88624634

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

/*
public class ListNode {
int val;
ListNode next = null;

ListNode(int val) {
this.val = val;
}
}*/

public class Solution {
public ListNode ReverseList(ListNode head) {
if(head ==null){
return null;
}
if(head.next==null){
return head;
}
ListNode ln1 =ln1 =head.next;
ListNode ln2 =ln2 = head.next.next;
ln1.next =head;
head.next =null;
while(ln2!=null){
head=ln1;
ln1 =ln2;
ln2=ln1.next;
ln1.next =head;
}			return ln1;

}
}

用两个ListNode来过渡
A->B->C->NULL
当空返回null,当为一个时返回它本身,到第三个开始才用到while,因为ln2有next.next,如果不存在第三个会报错,ln2用来探结点的下一个,而head和ln1是负责把后一个的next连接到前一个next,之后让head=ln1,ln1=ln2,ln2=ln1.next,往后集体移动一步,直到ln2为null;

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: