Skip to content

Commit f7deb23

Browse files
author
suke
committed
24
1 parent e8d2bd0 commit f7deb23

1 file changed

Lines changed: 46 additions & 0 deletions

File tree

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
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+
}

0 commit comments

Comments
 (0)