楼主:
ahabook (无聊的书)
2016-02-01 17:33:15※ 引述《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;
}