这是我的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;
}
}
希望有帮助!:)