










uj5u.com熱心網友回復:
void insertList(DLNode * p, ElementType x) {if ( NULL== p ) return;
DLNode * pT = (DLNode*) malloc (sizeof(DLNode));
pT->data = x;
pT->prior = p->prior;
pT->next = p;
p->prior = pT;
}
uj5u.com熱心網友回復:
void insertList(DLNode * p, ElementType x) {
if ( NULL== p ) return;
DLNode * pT = (DLNode*) malloc (sizeof(DLNode));
if (!pT)
return NULL;
pT->data = x;
pT->prior = p->prior;
pT->next = p;
p->prior = pT;
} 多加一句對pT申請空間之后的判斷。
另外,這個函式還有問題,如果p是頭結點,那么這樣的函式還能可以嗎?需要考慮p的位置是頭還是中間,還是尾。
uj5u.com熱心網友回復:
頭尾節點沒有所謂的, p的prior或者next節點正確設定了就好,可以在呼叫方處理如果想更通用,要改造一下, 有回傳就好了
DLNode* insertList(DLNode * p, ElementType x) {
if ( NULL== p ) return NULL;
DLNode * pT = (DLNode*) malloc (sizeof(DLNode));
if (NULL == pT) return NULL;
pT->data = x;
pT->prior = p->prior;
pT->next = p;
p->prior = pT;
return pT;
}
把插入位置有效性的檢測放到函式實作里面,還是在呼叫之前檢測各有各的好處
放在外面就要求使用者更清楚自己要做什么, 可以減少函式內部的判斷, 提高函式自身的執行效率
放在函式里面,函式可以更穩健
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/131812.html
標籤:C語言
上一篇:各位大哥幫我看一下,下面貪吃蛇游戲,鍵盤輸入檢測錯在哪里
下一篇:新手求助 請各位大佬救救我
