链表插入新节点的实现

链表插入新节点的实现,第1张

链表插入节点的简单实现

-函数设计:void insertLinkList(struct LinkNode *pHeader, int oldVal, int newVal);
-函数功能:在链表中查询旧值,查到后在该位置前插新节点。


若查不到,则在尾节点位置后插新节点。


  • 查询旧值,查找到所在节点

为了更好实现链表的插入,创建两个临时节点指针:当前节点指针pCurrent,前驱节点指针pPrevious

//创建两个临时的节点
struct LinkNode *pCurrent = pHeader->next;//当前节点
struct LinkNode *pPrevious = pHeader;//当前节点的前去节点

while(pCurrent != NULL)
{
	if(pCurrent->data == oldVal)
		break;
	pPrevious = ppCurrent;
	ppCurrent = ppCurrent->next;
}

  • 创建新的节点,与当前节点和前驱节点建立关系,插入链表中去
//创建新的节点并初始化
struct LinkNode *pNewNode = malloc(sizeof(struct LinkNode));
pNewNode->data = newVal;
pNewNode->next = NULL;

pNewNode->next = pCurrent;
pPrevious->next = pNewNode;
  • InsertLinkList()函数的最终实现

pCurrent == NULL,则对链表进行尾插,若pCurrent != NULL则对所在节点进行前插

void insertLinkList(struct LinkNode *pHeader,int oldVal,init newVal)
{
	if(pHeader == NULL)
		return;
	//创建两个临时节点指针:当前节点指针、前驱节点指针
	struct LinkNode *pCurrent = pHeader->next;
	struct LinkNode *pPrevious = pHeader;

	while(pCurrent != NULL)
	{
		if(pCurrent->data == oldVal)
			break;
		pPrevious = pCurrent;
		pCurrent = pCurrent->next;
	}
	
	struct LinkNode *pNewNode = malloc(sizeof(struct LinkNode));
	pNewNode->data = oldVal;
	pNewNode->next = NULL;

	PNewNode->next = pCurrent;
	pPrevious->next = pNewNode;
}		

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/564038.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-03
下一篇 2022-04-03

发表评论

登录后才能评论

评论列表(0条)

保存