3 回答

TA貢獻(xiàn)1880條經(jīng)驗(yàn) 獲得超4個(gè)贊
一開始,您會(huì)
pp = &list_head;
并且,當(dāng)您遍歷列表時(shí),可以使用
pp = &(*pp)->next;
這樣,您始終可以跟蹤“您來自”的點(diǎn),并可以修改居住在那里的指針。
因此,當(dāng)您找到要?jiǎng)h除的條目時(shí),您可以
*pp = entry->next
這樣,您就可以處理Afaq在另一個(gè)答案中提到的所有3種情況,從而有效地消除了對的NULL檢查prev。

TA貢獻(xiàn)1942條經(jīng)驗(yàn) 獲得超3個(gè)贊
我更喜歡虛擬節(jié)點(diǎn)方法,一種示例布局:
|Dummy|->|node1|->|node2|->|node3|->|node4|->|node5|->NULL
^ ^
| |
curr curr->next // << toDel
然后遍歷要?jiǎng)h除的節(jié)點(diǎn)(toDel = curr> next)
tmp = curr->next;
curr->next = curr->next-next;
free(tmp);
這樣,您無需檢查它是否是第一個(gè)元素,因?yàn)榈谝粋€(gè)元素始終是Dummy并且永遠(yuǎn)不會(huì)被刪除。
- 3 回答
- 0 關(guān)注
- 501 瀏覽
添加回答
舉報(bào)