2013-08-05 157 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