反转单链表
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode reverseList(ListNode head) {
if(head==null||head.next==null){
return head;
}
第一步初始化:
// pre指向头结点,pNode指向当前节点,next指向当前的下一个,令头结点的next为空
ListNode pre=head;
ListNode pNode=head.next;
ListNode next=pNode.next;
pre.next=null;
while(pNode!=null){
//将当前节点的next先保存,不然翻转后就没了
next=pNode.next;
//翻转
pNode.next=pre;
//翻转后移动两个指针
pre=pNode;
pNode=next;
}
//最后循环结束时,pNode为空,pre是pNode的前一个,pre是最后一个节点,也就是翻转后的头节点,直接返回pre就行
return pre;
}
}