单链表的反转(两种方法)

mac2025-12-12  1

第一种方法:通过头插法反转单链表

public ListNode reverse1(){ ListNode cur=this.head.next; ListNode newHead=this.head; newHead.next=null; while(cur!=null){ ListNode node=cur.next; cur.next=newHead; newHead=cur; cur=node; } return newHead; }

第二种方法:原地反转

public ListNode reverse2(){ ListNode prev=null; ListNode newHead=null; ListNode cur=this.head; while(cur!=null){ ListNode curNext=cur.next; if(curNext==null){ newHead=cur; } cur.next=prev; prev=cur; cur=curNext; } return newHead; }
最新回复(0)