1 #include<iostream>
2 #include<vector>
3 using namespace std;
4 struct ListNode {
5 int val;
6 ListNode* next;
7 ListNode() : val(0), next(nullptr) {}
8 ListNode(int x) : val(x), next(nullptr) {}
9 ListNode(int x, ListNode* next) : val(x), next(next) {}
10 };
11 ListNode* exchangeTwoLists(ListNode* list1, ListNode* list2) {
12 if (list2->next == nullptr||list2->next->next == nullptr) {
13 list1->next = list2->next;
14 list2->next = list1;
15 return list2;
16 }
17 list1->next = exchangeTwoLists(list2->next, list2->next->next);
18 list2->next = list1;
19 return list2;
20 }
21 class Solution {
22 public:
23 ListNode* swapPairs(ListNode* head) {
24 //判断一下初始 如果为空和长度为1 就直接返回
25 if (head== nullptr||head->next == nullptr) {
26 return head;
27 }
28 ListNode* list=exchangeTwoLists(head, head->next);
29 return list;
30 }
31 };
32 void listnum(ListNode& list, vector<int>& vectorlist) {
33 ListNode* headlist = &list;
34 for (int i = 0; i < vectorlist.size(); i++) {
35 ListNode* p;
36 p = (struct ListNode*)malloc(sizeof(struct ListNode*));
37 p->val = vectorlist[i];
38 headlist->next = p;
39 headlist = headlist->next;
40 }
41 headlist->next = NULL;
42 }
43 int main() {
44 Solution sol;
45 ListNode list1(1);
46 vector<int> vectorlist1 = {2,3,4,5,6};
47 listnum(list1, vectorlist1);
48 ListNode* list=sol.swapPairs(&list1);
49 for (int i = 0; list != NULL; i++) {
50 cout << list->val << endl;
51 list = list->next;
52 }
53 }