这是一个关于删除一个链表的节点的函数,下一个是代码。

//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;
}

10-04 12:23