The above is a single-linked list of the LC problem, I added a double-link list of the situation below
Public classSolution { PublicListNode Swappairs (ListNode head) {if(Head = =NULL|| Head.next = =NULL) { returnHead; } ListNode Dummy=NewListNode (0); Dummy.next=Head; Head=dummy; ListNode Pre=Head; ListNode P1=Head.next; ListNode P2=Head.next.next; ListNode P3=Head.next.next.next; while(P1! =NULL&& P2! =NULL) {P1.next=P3; P2.next=P1; Pre.next=P2; Pre=P1; P1=P3; if(P1 = =NULL) { Break; } P2=P1.next; if(P2 = =NULL) { Break; } P3=P2.next; } returnHead.next; }}
Public classSolution { PublicDulistnode Solution (Dulistnode Head, Dulistnode end) {if(Head = =NULL|| Head.next = =NULL) { returnHead; } Dulistnode Dummy=NewDulistnode (0); Dummy.next=Head; Head=dummy; Dummy=NewDulistnode (0); End.next=dummy; Dummy.pre=end; End=End.next; Dulistnode P1=Head; Dulistnode P2=Head.next; Dulistnode P3=Head.next.next; Dulistnode P4=Head.next.next.next; while(P2! =NULL&& P3! =NULL) {P2.next=P4; P4.pre=P2; P1.next=P3; P3.pre=P1; P3.next=P2; P2.pre=P3; if(P4 = = End | | p4.next = =end) { Break; } p1=P2; P2=P4; P3=P4.next; P4=P3.next; } End=End.pre; End.next=NULL; returnHead.next; }} Public classDulistnode {intVal; Dulistnode Next; Dulistnode Pre; Dulistnode (intval) { This. val =Val; }}
[Leetcode]swap Nodes in Pairs