现在的位置: 首页 > 综合 > 正文

交换单向链表的头结点和第n个节点

2013年03月17日 ⁄ 综合 ⁄ 共 292字 ⁄ 字号 评论关闭
void swapNth(Node **head, int n)
{
	if (head == NULL 
		|| *head == NULL
		|| n == 1)
	{
		return;
	}

	int count = 0;
	Node *prev = *head;
	while (prev && count < n-2)
	{
        prev = prev->next;
		count++;
	}
	if (prev == NULL)
	{
		return;
	}

	Node *p = prev->next;
	if (p == NULL)
	{
		return;
	}

	Node *next = p->next;
	p->next = (*head)->next;
	(*head)->next = next;
	prev->next = *head;
	*head = p;
}

抱歉!评论已关闭.