反转链表
又想了遍反转链表,我感觉我写的很详细了,你一定能看懂的,注释在代码中。
public class Main {
Node getReverseList(Node head){
//如果链表为空或只有一个节点,不需要反转,直接返回就行
if(head==null||head.next==null){
return head;
}
//反转后的链表的节点的指针
Node pReverseHead=null;
//在反转前链表上跑的头指针
Node pCurrent=head;
while(pCurrent!=null){
//存储要卸下来的反转节点
Node pTemp=pCurrent;
//向后挪一下,不要那个头了,它要反转
pCurrent=pCurrent.next;
//你每次拿下来的pTemp节点都放在了反转链表的头位置,因为你把屁股next朝向了上一次的节点
pTemp.next=pReverseHead;
//让这个pReverseHead节点先来站在你头的位置,让pTemp再去正序的链表上拿节点
pReverseHead=pTemp;
}
//当你遍历到最后一个节点时,它就成了首节点
return pReverseHead;
}
}
class Node{
int data;
Node next;
public Node(int data){
this.data=data;
this.next=null;
}
}