码迷,mamicode.com
首页 > 其他好文 > 详细

【LeetCode OJ】Swap Nodes in Pairs

时间:2015-04-02 10:31:49      阅读:114      评论:0      收藏:0      [点我收藏+]

标签:

题目: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.

解决思路:初始状态下,让指针p指向第一个节点,q指向第二个节点,当q不为空时,交换两节点的值,再让p指向q后面的节点,q指向p后面的节点,交换节点值,一次循环管直到遇到空节点。代码如下:

struct ListNode
{
	int val;
	ListNode *next;
	ListNode(int x) : val(x), next(NULL) {}
	
};
ListNode *swapPairs(ListNode *head)
{
	if (head == NULL || head->next == NULL)
		return head;
	ListNode *p = head;
	ListNode *q = p->next;
	while (q)
	{
		int temp;
		temp = p->val;
		p->val = q->val;
		q->val = temp;
		if (q->next != NULL)
		{
			p = q->next;
			if (p->next != NULL)
				q = p->next;
			else
				break;
			
		}
			else
				break;
		}
		return head;
	}


【LeetCode OJ】Swap Nodes in Pairs

标签:

原文地址:http://blog.csdn.net/xujian_2014/article/details/44827685

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!