在单链表的第i个位置后插入一个节点(面试题)

/*

 思路:

           面对这题,我们首先要冷静。

            可以先从常规想,既然要插入一个结点,可以把它分成两大类:之前有无节点,如果有,根据判断条件,将其插到符合节点的后面,但你又的思考,插入位置是头部还是中间。

            第二大类:就是如果之前没提供节点,那么插入的节点就是这个链表唯一的节点,切记还有一种情况。

           

*/

int insertNode(Node **head,Node *newNode)
{
	Node *p=*head;
	Node *q=*head;
	
	while(p!=NULL)
	{
		if(p->id >newNode->id)
		{
			newNode->next=p;
			if(p==*head)
			{
				
				*head=newNode;
			}
			else
			{
				q->next=newNode; 
			}
			return 0;	
		}
		q=p;
		p=q->next;	
	}
	//如果是空链表
	if(*head==NULL)
	{
		*head=newNode;
	}
	else{
		q->next=newNode;
		newNode->next=NULL;
	}	
}

 

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页
实付 39.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值