簡體   English   中英

從鏈接列表中刪除最后一個節點C ++

[英]Remove last node from linked list c++

當我運行此代碼時,它return s正確的數字,但此后不會deletedelete

我嘗試了其他幾個功能,但它們也不起作用。 我的功能有問題嗎?還是應該在功能之外看?

int Stack::remove()
{
  clean = head; //clean is what it to be deleted. Head is the beginning

  while (clean->next != NULL) //stop at the end of list
  {
     clean = clean->next; //move it along
   }

  return clean->number; //this gives me the right number
  delete clean; //but when I print list in main, last item is still there
  clean = NULL; //something about dangling pointers
}

問題是return語句之后的任何內容都不會執行。

因此,將clean-> number值復制到某個臨時變量,刪除clean並返回該臨時變量的值。

您必須使指向您要刪除的節點的指針為空-頭指針或前一個節點中的下一個指針。

然后,您可以刪除它並返回數字。 同樣,正如Paul所指出的,您必須記住該編號,刪除該節點,然后將其返回。

我一直都是這樣:

if (head == NULL) {
    //return some error condition
}
Node **pclean = &head;
while ((*pclean)->next != NULL) {
    pclean = &((*pclean)->next);
}
int ret = (*pclean)->number;
delete *pclean;
*pclean = NULL;
return ret;

這樣,我們總是擁有指向節點的指針,這就是我們必須清空的地方。

現在,如果這是一個難題,那么請不要上交這段代碼-您的教授將知道您沒有編寫它。 在沒有指針到指針的情況下執行此操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM