【leetcode】24. Swap Nodes in Pairs - 成对交换链表元素
2016-08-06 13:37
661 查看
/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */ struct ListNode* swapPairs(struct ListNode* head) { if (head==NULL||head->next==NULL){ return head; } struct ListNode *p,*t; struct ListNode *newHead=head->next; struct ListNode *tail=NULL; while (head){ if (head->next==NULL){ tail->next=head; return newHead; } p=head->next; if (tail!=NULL){ tail->next=p; } t=p->next; p->next=head; tail=head; head=t; } tail->next=NULL; return newHead; }
题不是很难,但是相对其他题想了蛮久,因为指针有点多,绕来绕去就绕晕了。
用了四个指针,head(原链表的头),tail(新链表的尾),p(新链表的头),t(下一次循环要用到的原链表的头)。
搞清楚每次循环的开始做什么和结束做什么是关键
开始的时候:将上次反转后的链表的tail指向新链表的头p;
结束的时候:更新tail,head
相关文章推荐
- LeetCode | Swap Nodes in Pairs(将链表中的元素两两交换)
- [LeetCode] 24. Swap Nodes in Pairs 成对交换节点
- (Java) LeetCode 24. Swap Nodes in Pairs —— 两两交换链表中的节点
- Leetcode刷题记——24. Swap Nodes in Pairs(交换成对结点)
- leetCode 24. Swap Nodes in Pairs 链表
- LeetCode-------24. Swap Nodes in Pairs(两两交换)
- 【LeetCode-面试算法经典-Java实现】【024-Swap Nodes in Pairs(成对交换单链表的结点)】
- [Leetcode] Swap nodes in pairs 成对交换结点
- LeetCode - 24 - Swap Nodes in Pairs(交换链表结点)
- 交换单链表中相邻的两个元素 Swap Nodes in Pairs
- [leetcode] 24 Swap Nodes in Pairs(交换链表相邻结点)
- LeetCode 24. Swap Nodes in Pairs ***** 双节点交换
- leetCode 24. Swap Nodes in Pairs (双数交换节点) 解题思路和方法
- LeetCode 24. Swap Nodes in Pairs(交换节点)
- [LeetCode]Swap Nodes in Pairs 成对交换
- LeetCode-24 Swap Nodes in Pairs(链表中按要求交换节点)
- Swap Nodes in Pairs 链表两两交换节点@LeetCode
- [LeetCode] Swap Nodes in Pairs(成对交换节点)
- LeetCode 24. Swap Nodes in Pairs(按对交换单链表结点)
- leetcode之24. Swap Nodes in Pairs(C++实现&链表实现和整体测试)