以下分別是我的雙鏈表的建立,洗掉元素和除錯出現的問題


uj5u.com熱心網友回復:
把你的main函式的代碼也貼出來,看看你調洗掉函式的時候怎么head引數有沒有初始化其次,洗掉函式phead和p指標不用new一次,直接用head賦值就好,即DPigNode *phead=head; DPigNode *p=head; 否則你new了不用又不delete,造成記憶體泄漏
uj5u.com熱心網友回復:
head已經傳參進來了, pHead = p = head;兩個new都是沒有必要的操作
D
Node * pHead, *p, *temp);pHead = p = head;
while ( p!= NULL ) {
if ( p->weight != weight ) p = p->pNext
; // 不是要洗掉的節點 temp = p; // p就是要洗掉的節點
if ( NULL == p -> pPre
) { // p是頭結點才會沒有前置節點pHead = p->pNext
;pHead->pPre
= NULL;delete p;
return pHead;
}
if ( NULL == p->pNext

) { // p是尾巴節點 
p->pPre
->pNext
=NULL;delete p;
return pHead;
}
// p不是
頭,也不是
尾巴p->pPre
->pNext
= p->pNext
;p->pNext
->pPre
= p->pPre
; delete p;
return pHead;
}
return pHead; // 到了最后也沒有找到要洗掉的weight就會執行這個陳述句
uj5u.com熱心網友回復:
head已經傳參進來了, pHead = p = head;
兩個new都是沒有必要的操作
D
Node * pHead, *p, *temp;pHead = p = head;
while ( p!= NULL ) {
if ( p->weight != weight ) p = p->pNext
; // 不是要洗掉的節點 temp = p; // p就是要洗掉的節點
if ( NULL == p -> pPre
) { // p是頭結點才會沒有前置節點pHead = p->pNext
;if ( pHead ) // 有可能佇列里面只有節點,此時pHead會是NULL
pHead->pPre
= NULL;delete p;
return pHead;
}
if ( NULL == p->pNext

) { // p是尾巴節點 
// 這里不用再檢測p->pPre
, 程式到這兒已經保證了p不是頭結點,前置節點必存在p->pPre
->pNext
=NULL;delete p;
return pHead;
}
// p不是
頭,也不是
尾巴p->pPre
->pNext
= p->pNext
;p->pNext
->pPre
= p->pPre
; delete p;
return pHead;
}
return pHead; // 到了最后也沒有找到要洗掉的weight就會執行這個陳述句
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/123359.html
標籤:新手樂園
