样例:
给出一个链表1->2->3->null,这个翻转后的链表为3->2->1->null
思路:
1.首先,传入头节点,进行非空判断
2.实现链表翻转的思路:从尾节点开始,第个节点依次指向前一个节点,然后将头节点指向空,这样就只留下了以原尾节点开始,原头节点结束的链表
3.本题具体实现方法:用名为curr的节点来代表前一个节点,名为next的节点代表后一个节点,名为temp的节点来保存next.next的节点
这样,通过赋值,三个节点依次向链表尾移动,使后一个节点指向前一个节点,直到next为空值,循环结束
解题:
1.在另外一个class文件中定义节点
public class ListNode {
public int val;
public ListNode next;
public ListNode(int val) {
this.val = val;
this.next = null;
}
}
2.翻转链表
public class Solution {
public ListNode reverse(ListNode head) {
if (head == null || head.next == null)
return head;
ListNode curr = head;
ListNode next = curr.next;
while (next!=null ){
ListNode temp= next.next;
next.next =curr;
curr=next;
next=temp;
}
head.next=null;//将头节点指向空,只留下以原尾节点开始,原头节点结束的链表
return curr;
}
}