2013-08-05 174 views
0

我坐在一个图书馆,我从头顶上看到两个函数。 removefrombottom函数和removefromtop函数,用于删除链接列表的底部和顶部节点。林想知道如果这个代码会工作,或者如果我的逻辑是不正确的。任何建议,如果我错了,将不胜感激。继承人什么我想出了删除LinkedList中的底部和顶部节点

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

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

是将这些实际删除链表的头和尾?

+0

你可以像http://coliru.stacked-crooked.com/ – John

+0

@约翰基于Web的编译器测试将尝试,但通过简单地在您看来查看此;这似乎工作? – WestonBuckeye

+1

当然,但这不是一个有用的问题。如果有什么bug,它们就是你没有展示的东西,所以这只是一个伪代码审查。 – Useless

回答

2

我想你必须先检查列表是否为空,然后再删除任何元素。当列表只有一个元素时,还可以实现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; 
    } 
} 
+0

我只是假设这些函数调用时,列表充满了大量的项目。但是你绝对正确。谢谢你的建议! – WestonBuckeye