※ 引述《LoserOfLove (LOL)》之銘言:
: 附上題目截圖
: http://imgur.com/7P0TSnX
: 想請問第三小題,我一開始想到的解法如下:
: while (A->rlink != NULL) {
: A = A->rlink;
: delete A->llink;
: }
: delete A;
: A = NULL;
: 邏輯看似是對的,但實際執行時,發現被delete的記憶體空間並不會是NULL,而是亂數
: 所以當delete到最後一個節點時,此節點的rlink雖然已經被delete了,但不是NULL
: 導致A->rlink != NULL這個條件判斷變成無限迴圈
: 這題該怎麼解?不知道版上的朋友有沒有什麼建議?
我來試看看
A->llink->rlink =NULL;
if(A!=A->rlink)
{
A = A->rlink;
while(A!= NULL)
{
dletet A->llink;
if(A->rlink==NULL)
{
delete A;
A=NULL;
break;
}
A=A->rlink;
}
}
if(A)
{
delete A;
A=NULL;
}