您的位置:首页 > Web前端 > Node.js

【一天一道LeetCode】#24. Swap Nodes in Pairs

2016-04-22 21:12 691 查看

一天一道LeetCode系列

(一)题目

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.

(二)解题

给定一个链表,交换相邻两个节点,这道题要特别注意越界问题。

评级easy的题!就不多废话了。

/**
* 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 == NULL) return NULL;
ListNode* p = head;
ListNode* pnext = head->next;
while(p!=NULL&&pnext!=NULL)
{
int tmp = pnext->val;
pnext->val = p->val;
p->val = tmp;
if(pnext->next !=NULL) p = pnext->next; //考虑越界问题,如[1,2,3,4]
else p=NULL;
if(p!= NULL && p->next != NULL) pnext = p->next;//考虑越界问题,如[1,2,3,4,5]
else pnext=NULL;
}
return head;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: