思路
使用头插法逆转链表
注:链表一般为操作方便,头结点不存值,是一个虚拟节点
代码
/*** 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 dummynode=new ListNode(0);dummynode.next=null;ListNode curr = head;ListNode q=null;while (curr != null) {//把第一个结点保存一下q=dummynode.next;//把当前结点接在虚拟节点后面dummynode.next=curr;//当前结点移到下一个结点curr=curr.next;//把之前的拼回去dummynode.next.next=q;}return dummynode.next;}
}