删除链接列表的后面

时间:2014-03-29 01:01:25

标签: c linked-list

如果链接列表中有一个节点,并且您尝试在我的程序中从后面删除它,则会出错。我想我知道为什么,但我无法解决。看到这是一个赋值,规则非常严格,我应该逐字实现一个头,而对于removeFromBack函数,我们应该删除后节点,然后返回指向被删除节点的指针。但是如果只剩下一个节点,我就不能取消引用ptr->;然后将其设为null,这反过来又给我带来了问题。如何在不更改任何参数的情况下解决此问题?这是我的代码

MusicRec * removeFromBack(MusicRec * theList)
{
    MusicRec *record;
    if(theList == NULL)
    {
        return NULL;
    }
    else if(theList->next == NULL)
    {
        record = theList;
        theList = NULL;
        return record;
    }

    while(theList->next->next != NULL)
    {
        theList = theList->next;
    }

    record = theList->next;
    theList->next = NULL;

    return record;
}

0 个答案:

没有答案