删除LinkedList中的Bottom和Top节点

Deleting Bottom and Top node in a LinkedList

本文关键字:Top 节点 Bottom LinkedList 中的 删除      更新时间:2023-10-16

我坐在这里的一个图书馆里,脑海中浮现出两个函数。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;
   }
}