今天晚上看了IT名企算法与数据结构最优解的关于单链表的反转问题,刚开始自己也理解了一会。后面突然就豁然开朗了。
首先,我们申明一个链表类。
//链表类
class Node{
public int data;
public Node next;
public Node(int data){
this.data=data;
}
}
因为在对链表进行反转的时候,需要更新每一个node的“next”值,但是,在更新 next 的值前,我们需要保存 next 的值,否则我们无法继续。所以,我们需要两个指针分别指向前一个节点和后一个节点,每次做完当前节点“next”值更新后,把两个节点往下移,直到到达最后节点。
代码如下:
public Node resverList(Node head){
Node pre=null;
Node next=null;
while(head!=null){
next = head.next;
head.next=pre;
pre=head;
head=next;
}
return pre;
}