反转链表

it2025-11-15  2

给定一个链表进行反转 1->2->3->4->null null->4->3->2->1

双指针法

public ListNode reverseList2(ListNode head){ ListNode pre=null; ListNode cur=head; ListNode temp; while (cur!=null){ temp=cur.next; cur.next=pre; pre=cur; cur=temp; } return pre; }

尾插法

public ListNode reverseList(ListNode head) { ListNode dummy=new ListNode(-100); dummy.next=head; //dummy模拟带头结点的链表 if (dummy.next==null||dummy.next.next==null){ //只有一个节点或者没有节点 return head; } ListNode temp=dummy.next; while (temp.next!=null){ temp=temp.next; //找到尾结点 } ListNode last=temp; while (dummy.next!=last) { //相当于尾插法,一直往尾部插入头元素 ListNode p=dummy.next; dummy.next=p.next; p.next=last.next; last.next=p; } return dummy.next; }

最新回复(0)