改变头结点代码:
java
复制代码
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode reverseList(ListNode head) {
ListNode prev=null; //定义一个空结点,表示反转之后
while(head!=null){
ListNode next=head.next; //定义头结点的下一个结点
head.next=prev; //反转链表
prev=head; // prev前进
head=next; //head 前进
}
return prev;
}
}
不改变头节点代码:
java
复制代码
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode reverseList(ListNode head) {
/*改变head
ListNode prev=null; //定义一个空结点,表示反转之后
while(head!=null){
ListNode next=head.next; //定义头结点的下一个结点
head.next=prev; //反转链表
prev=head; // prev前进
head=next; //head 前进
}
return prev;
*/
ListNode current=head; //用current代替head,head表示不变
ListNode prev=null; //定义一个空结点,表示反转之后
while(current!=null){
ListNode next=current.next;
current.next=prev;
prev=current;
current=next;
}
return prev;
}
}