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

【LeetCode OJ】Swap Nodes in Pairs

2015-04-02 09:09 316 查看
题目: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;
	}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: