[英]Remove last node from linked list c++
當我運行此代碼時,它return
s正確的數字,但此后不會delete
其delete
。
我嘗試了其他幾個功能,但它們也不起作用。 我的功能有問題嗎?還是應該在功能之外看?
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.