链表的算法题一直做的浑浑噩噩的,为了避免忘记以及能够及时的温故知新,所以将本次的解答记录如下:
话不多说,先贴代码:
/*
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;
}
ListNode pre=null;
ListNode next=null;
while(head!=null) {
next=head.next;//让next引用指向head下一个节点,
head.next=pre;//pre始终指向当前head的前一个节点,这样可以反转节点了。
pre=head;
head=next;
}
return pre;
}
}
基础薄弱的我来说光存代码还是远远不够的,恐怕下次来还是面面相觑啊。
我多想做一个动态展示的图片形象具体的说明一下啊。。。。。。。奈何根本不知道怎么做图片。只能用简单的图片描述一下了。
最开始的情况是这样
next=head.next 之后
head.next = pre 之后 节点1和节点2断开,因为pre初始化是null,所以此时节点1的next相当于指向空节点
pre = head 之后
head = next 之后
循环下去,链表就会实现反转。。。(画简单的几个图真是不容易啊.....)