这是一个关于删除一个链表的节点的函数,下一个是代码。
//delete List
int deleteList(PNODE pHead,int pos)
{
int i=0;
PNODE p=pHead->pNext;
//locate the position
while(p!=NULL && i<pos-1)
{
p=p->pNext;
i++;
}
if(i>pos-1 || p==NULL)
{
return 0;
}
PNODE q=p->pNext;
p->pNext=q->pNext;
free(q);
return 1;
}
我不知道以下代码是否有实际用途:
if(i>pos-1 || p==NULL)
{
return 0;
}
最佳答案
通过取消选中i
,可以修改确定是否尝试拼接的条件您的算法已经将p
指针正确地放置在要拼接的节点之前的节点上。如果两个p
不为null,并且在其之后存在一个节点以拼接,则只需要采取行动。
if (p==NULL || p->pNext==NULL)
{
return 0;
}
else
{
PNODE q=p->pNext;
p->pNext=q->pNext;
free(q);
return 1;
}