(链表 递归) leetcode 24. Swap Nodes in Pairs

mac2022-06-30  94

Given a linked list, swap every two adjacent nodes and return its head.

You may not modify the values in the list's nodes, only nodes itself may be changed.

 

Example:

Given 1->2->3->4, you should return the list as 2->1->4->3.---------------------------------------------------------------------------中文大意是两两交换其中相邻的结点。有非递归和递归的解法,在非递归的解法上,要画下图,辅助理解。C++代码:非递归: /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode* swapPairs(ListNode* head) { ListNode *dummy = new ListNode(-1),*cur = dummy; cur->next = head; while(cur->next && cur->next->next){ ListNode *t = cur->next->next; cur->next->next = t->next; t->next = cur->next; cur->next = t; cur =cur->next->next; } return dummy->next; } };

 

递归:

/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode* swapPairs(ListNode* head) { if(!head || !head -> next){ return head; } ListNode *t = head->next; head->next = swapPairs(head->next->next); t->next = head; return t; } };

 

参考博客:http://www.cnblogs.com/grandyang/p/4441680.html

转载于:https://www.cnblogs.com/Weixu-Liu/p/10704144.html

相关资源:JAVA上百实例源码以及开源项目
最新回复(0)