File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ /**
2+ * Definition for singly-linked list.
3+ * public class ListNode {
4+ * int val;
5+ * ListNode next;
6+ * ListNode(int x) { val = x; }
7+ * }
8+ */
9+ class Solution {
10+ public ListNode swapPairs (ListNode head ) {
11+ if (head == null ){
12+ return null ;
13+ }
14+ if (head .next == null ){
15+ return head ;
16+ }
17+
18+ ListNode preNode = head ;
19+ ListNode curNode = head .next ;
20+ ListNode retNode = curNode ;
21+ ListNode newPreNode = null ;
22+ while (preNode != null && curNode != null ){
23+ removeCurNode (preNode ,curNode );
24+ insertBeforeCurNode (newPreNode ,preNode ,curNode );
25+ preNode = curNode .next .next ;
26+ newPreNode = curNode .next ;
27+ if (preNode != null ){
28+ curNode = preNode .next ;
29+ }
30+ }
31+ return retNode ;
32+ }
33+
34+ private void removeCurNode (ListNode preNode ,ListNode curNode ){
35+ if (preNode != null ){
36+ preNode .next = curNode .next ;
37+ }
38+ curNode .next = null ;
39+ }
40+ private void insertBeforeCurNode (ListNode preNode ,ListNode curNode ,ListNode node ){
41+ node .next = curNode ;
42+ if (preNode != null ){
43+ preNode .next = node ;
44+ }
45+ }
46+ }
You can’t perform that action at this time.
0 commit comments