並不是一定需要得到被刪除的結點的前乙個結點,可以將被刪除結點的後乙個結點的內容複製到被刪除結點,然後將後乙個結點刪除。
//鍊錶只有乙個結點,刪除頭結點(也是尾結點)
else if(*plisthead == ptobedeleted)
//要刪除的結點是尾結點
上面的解法有乙個假設:要刪除的結點的確在鍊錶中。需要o(n)的時間才能判斷鍊錶中是否包含某一結點,受到o(1)的限制,不得不把確保結點在鍊錶中的責任推給了函式deletenode的呼叫者。
在O 1 時間刪除鍊錶結點
題目 給定單向鍊錶的頭指標和乙個結點指標,定義乙個函式在o 1 時間刪除該結點。鍊錶結點與函式的定義如下 struct listnode void deletenode listnode plisthead,listnode ptobedeleted 刪除結點的操作我們經常碰到,比如乙個鍊錶a b ...
在O 1 時間刪除鍊錶結點
問題描述 給定單向鍊錶的頭指標和乙個結點指標 定義乙個函式在o 1 時間刪除鍊錶結點。鍊錶結點與函式的定義如下 struct listnode void deletenode listnode plisthead listnode ptobedeleted 思路 在單向鍊錶中刪除乙個結點,最常用的做...
在O 1 時間刪除鍊錶結點
題目 題目 給定鍊錶的頭指標和乙個結點指標,在o 1 時間刪除該結點。思路 通常情況下,如果我們要刪除單鏈表的乙個節點,我們需要遍歷鍊錶找到這個節點的前乙個節點,然後執行刪除操作,時間複雜度為o n 我們試著換一種思路,事實上,我們可以從給定的結點得到它的下乙個結點。這個時候我們實際刪除的是它的下乙...