C - 如何从列表后面删除?该列表目前有"stir it up, pokemon theme"



这是我的removeFromTheBack函数。输入列表包含两个字符串:"Stir it up"one_answers"Pokemon theme"。我希望函数从列表的后面删除并返回被删除的元素。然而,我似乎不知道问题是什么,因为它没有删除我想要删除的东西。任何帮助吗?

MusicRec*removeFromBack(MusicRec*theList)
{
    MusicRec*temp;
    if(theList == NULL)
    {
        return NULL;
    }
    temp=theList->next;
    while(temp->next->next !=NULL)
    {
        temp=theList->next;
    }
    temp->next=NULL;
    return temp;
}

在你的代码中

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

当循环退出时,temp将指向最后一个节点,您将返回该节点。但是,您想要返回的节点,即最后一个,将从这里的列表中删除

temp->next=NULL;

返回最后一个节点,执行

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

,其中temp2指向最后一个节点。您可以再添加一个if语句来处理列表只有一个节点的情况,如

if(theList->next == NULL)
{
    temp=theList;
    theList=NULL;
    return temp;
}

从你对第一篇文章的评论

这个列表有两个元素"搅动它"one_answers"口袋妖怪主题"。我想去掉这些字。它应该返回精灵宝可梦主题,但现在它返回搅动它

似乎你真正想要的是从前面删除一个元素。最简单的方法是:

  • 查找列表中的第一项
  • 返回下一个元素

你可以这样做

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

希望有帮助!:)

相关内容

  • 没有找到相关文章

最新更新