Closed. This question is off-topic。它当前不接受答案。
想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
5年前关闭。
我坐在图书馆里,从脑海中想出了两个功能。一个removefrombottom函数和一个removefromtop函数,它们删除链表的底部和顶部节点。我想知道这段代码是否有效,或者我的逻辑是否正确。任何建议,如果我是错的将不胜感激。这是我想出的
这些实际上会删除链接列表的头和尾吗?
想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
5年前关闭。
我坐在图书馆里,从脑海中想出了两个功能。一个removefrombottom函数和一个removefromtop函数,它们删除链表的底部和顶部节点。我想知道这段代码是否有效,或者我的逻辑是否正确。任何建议,如果我是错的将不胜感激。这是我想出的
void removefrombottom()
{
StringListNode *curr = pBottom;
pBottom = pBottom->pPrev;
delete curr;
}
void removefromtop()
{
StringListNode *curr = pTop;
pTop = pTop->pNext;
delete curr;
}
这些实际上会删除链接列表的头和尾吗?
最佳答案
我认为您必须先检查列表是否为空,然后再删除任何元素。当列表只有一个元素时,还要实现pTop和pBottom指针。
void removefrombottom()
{
if(pBottom != NULL){ //OR if(size > 0){
StringListNode *curr = pBottom;
pBottom = pBottom->pPrev;
if(curr == pTop) pTop = NULL;
delete curr;
//--size;
}
}
void removefromtop()
{
if(pTop != NULL){ //OR if(size > 0){
StringListNode *curr = pTop;
pTop = pTop->pNext;
if(curr == pBottom) pBottom = NULL;
delete curr;
//--size;
}
}
关于c++ - 删除链接列表中的底部和顶部节点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18060999/