C++ 删除LinkedList中的底部和顶部节点

C++ 删除LinkedList中的底部和顶部节点,c++,function,linked-list,C++,Function,Linked List,我坐在图书馆里,脑子里想了两个函数。removefrombottom函数和removefromtop函数,用于删除链表的底部和顶部节点。我想知道这个代码是否有效,或者我的逻辑是否不正确。如果我错了,任何建议都将不胜感激。这是我想到的 void removefrombottom() { StringListNode *curr = pBottom; pBottom = pBottom->pPrev; delete curr; } void removefromtop() {

我坐在图书馆里,脑子里想了两个函数。removefrombottom函数和removefromtop函数,用于删除链表的底部和顶部节点。我想知道这个代码是否有效,或者我的逻辑是否不正确。如果我错了,任何建议都将不胜感激。这是我想到的

void removefrombottom()
{
  StringListNode *curr = pBottom;
  pBottom = pBottom->pPrev;
  delete curr;
}

void removefromtop()
{
  StringListNode *curr = pTop;
  pTop = pTop->pNext;
  delete curr;
}

这些是否真的会删除链接列表的开头和结尾?

我认为在删除任何元素之前,必须检查列表是否为空。当列表只有一个元素时,还可以实现pTop和pbotom指针

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

您可以使用基于web的编译器进行测试,比如@John将尝试这样做,但您只需按照自己的观点查看即可;这看起来有效吗?当然,但这不是一个有用的问题。如果有bug,它们就在你没有展示的内容中,所以这只是一个伪代码检查。@我问的是逻辑是否正确。这个问题似乎是离题的,因为它是关于检查代码的,应该在im上,只要假设这些函数是在列表中充满很多项时调用的。然而,你是绝对正确的。谢谢你的建议!