-函数设计: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;
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)