输入一个链表,反转链表后,输出链表的所有元素。
思路:
ListNode next = null;//用来保存待反序的第一个节点(head 和 next节点)
ListNode pre = null;//用来保存已经反序的第一个结点
next = head.next;//首先记录当前节点的下一个节点,(保存起来)
//先用next保存head的下一个节点的信息,保证单链表不会因为失去head节点的原next节点而就此断裂
head.next = pre;//让当前节点指向前一个节点,因为要反序
//保存完next,就可以让head从指向next变成指向pre了
pre = head;//让前一个节点值,取代当前的节点值。因为要继续向下走
//head指向pre后,就继续依次反转下一个节点
head = next;//让下一个节点,取代当前节点
//让pre,head,next依次向后移动一个节点,继续下一次的指针反转
1 /* 2 public class ListNode { 3 int val; 4 ListNode next = null; 5 6 ListNode(int val) { 7 this.val = val; 8 } 9 }*/ 10 public class Solution { 11 public ListNode ReverseList(ListNode head) { 12 ListNode pre = null; 13 ListNode next = null; 14 while (head != null) { 15 next = head.next; 16 head.next = pre; 17 pre = head; 18 head = next; 19 } 20 return pre; 21 } 22 }
c++代码:
:
时间: 2024-10-27 05:29:20