我坐在图书馆里,突然想到了两个函数。删除链表底部和顶部节点的 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;
}
}