反转链表
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;
相关文章推荐
- 《剑指Offer》面试题:反转链表
- 链表问题(3)-- 反转部分单项链表
- 数据结构之单向链表操作1-(插入,删除,交换,反转,排序等操作)
- 面试题16:反转链表
- 【C++】反转链表
- Leetcode 92 反转链表 【链表】
- 反转链表[数据结构]
- 剑指offer之面试题16 :反转链表
- PAT-B 1025. 反转链表
- 使用递归和非递归方式反转单向链表
- 【剑指OFFER】反转链表
- Microsoft100——003.链表反转
- 剑指offer(十四,十五)链表中倒数第k个结点,反转链表
- 链表的合并与反转
- 尾插法、头插法创建链表、链表反转、链表分段反转、查找链表倒数第k个元素,查找链表中间元素
- 链表1:反转单向链表,双向链表
- 反转链表
- 面试之路(28)-反转链表(reverse ListNode)
- 单链表反转
- 链表:反转、合并