24. 两两交换链表中的节点

Posted zouma

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了24. 两两交换链表中的节点相关的知识,希望对你有一定的参考价值。

 一、非递归

 1 ListNode* swapPairs(ListNode* head) 
 2     ListNode* pre = (ListNode*)malloc(sizeof(ListNode));
 3     pre->next = head;
 4     ListNode* temp = pre;
 5 
 6     while (temp->next&&temp->next->next)
 7     
 8         ListNode* start = temp->next;
 9         ListNode* end = temp->next->next;
10 
11         temp->next = end;
12         start->next = end->next;
13         end->next = start;
14         
15         temp = start;
16     
17     return pre->next;
18 

二、递归

1 ListNode* swapPairs(ListNode* head) 
2     if (head == NULL || head->next == NULL)
3         return head;
4     ListNode* next = head->next;
5     head->next = swapPairs(next->next);
6     next->next = head;
7     return next;
8 

 

以上是关于24. 两两交换链表中的节点的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 24. 两两交换链表中的节点

24. 两两交换链表中的节点

[leetcode] 24. 两两交换链表中的节点

leetcode 24 - 两两交换链表中的节点

链表-LeetCode24两两交换链表中的节点

24. 两两交换链表中的节点