Swap Nodes in Pairs
来源:互联网 发布:2017机顶盒破解软件 编辑:程序博客网 时间:2024/06/11 09:13
Given a linked list, swap every two adjacent nodes and return its head.
For example,
Given 1->2->3->4
, you should return the list as 2->1->4->3
.
Your algorithm should use only constant space. You may not modify the values in the list, only nodes itself can be changed.
这里贴一个错误代码,本人的:
/** * 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) { // IMPORTANT: Please reset any member data you declared, as // the same Solution instance will be reused for each test case. if(head|| head->next) return head; ListNode *p, *q, *swap; p = head; q = p->next; swap = q; while(p&&q) { p->next = q->next; q->next = p; p = p->next; q = p->next; } return swap; }};
Submission Result: Runtime Error
Last executed input:{1,2}原因:
q = p->next; //此时p=NULL了
于是添加 if(p)于前
又错误:
Submission Result: Runtime Error
Last executed input:{}还是那个原因
if(head||head->next)
head=NULL时, head->next就错了
改之:
if(!head||!head->next) return head;
当一切就绪时,
/** * 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) { // IMPORTANT: Please reset any member data you declared, as // the same Solution instance will be reused for each test case. if(!head||!head->next) return head; ListNode *p, *q, *swap; p = head; q = p->next; swap = q; while(p&&q) { p->next = q->next; q->next = p; p = p->next; if(!p) break; else q = p->next; } return swap; }};
Input:{1,2,3,4}Output:{2,1,3}Expected:{2,1,4,3}
这个错误是, 到后面, 前断开的没连上
增加前面的pre
最终代码:
/** * 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) { // IMPORTANT: Please reset any member data you declared, as // the same Solution instance will be reused for each test case. if(!head||!head->next) return head; ListNode *p, *q, *swap, *pre; p = head; q = p->next; swap = q; pre = NULL; while(p&&q) { p->next = q->next; q->next = p; if(pre) pre->next = q; pre = p; p = p->next; if(!p) break; else q = p->next; } return swap; }};
0 0
- Swap Nodes in Pairs
- Swap Nodes in Pairs
- Swap Nodes in Pairs
- Swap Nodes in Pairs
- Swap Nodes In Pairs
- Swap Nodes in Pairs
- Swap Nodes in Pairs
- Swap Nodes in Pairs
- Swap Nodes in Pairs
- Swap Nodes in Pairs
- Swap Nodes in Pairs
- Swap Nodes in Pairs
- Swap Nodes in Pairs
- Swap Nodes in Pairs
- Swap Nodes in Pairs
- Swap Nodes in Pairs
- Swap Nodes in Pairs
- Swap Nodes in Pairs
- 高效整洁CSS代码原则
- map的两种遍历方式和区别。
- c++ stirng的使用
- 使用ssh的时候会出现下面的提示: Address 192.168.1.2 maps to localhost, but this does not map back to the address
- Android XML文件使用
- Swap Nodes in Pairs
- DRM 分析及案例讲解
- 线段树入门
- JavaScript高级之闭包的概念及其应用
- Android 文件读写的例子
- 关于UNIX环境高级编程第二版编译问题
- canvas实现价格走执图。
- 从招式与内功谈起——设计模式概述(二)
- 从招式与内功谈起——设计模式概述(三)