链表反转
将单链表的链接顺序反转过来,如下题:
例:输入:1->2->3->4->5, 输出:5->4->3->2->1
图中一个方块表示一个链表ListNode
为了方便理解,就想象就是ListNode1中含着一个next的ListNode,而这个next指向的是ListNode2这个整体,后面也是这样想象的。
关系如下:
ListNode l3=new ListNode(3, null);
ListNode l2=new ListNode(2, l3);
ListNode l1=new ListNode(1, l2);
就是1的后面是2,2的后面是3,······;
进行链表的反转,我们要考虑清楚,什么需要保存下来,
首先这个1(代表整个ListNode1)整体要保存起来为B,1里面的next要保存起来为A(这个A=1.next=2,2代表整个ListNode2)
于是就得到了二个关键信息A,B
要进行交换,要先交换整体,再交换内面的next
就有了如下代码
A=l1.next;
l1.next=B;
B=l1;
l1=A;
这里你要把1.next=A=2,就好理解了
我是一个小小的新手,出错了请谅解。谢谢