刪除單鏈表某個結點

2021-06-28 04:45:50 字數 618 閱讀 9998

題目:刪除帶頭結點的單鏈表l中的結點p,p不是最後乙個結點,要求時間複雜度為o(1)。

解題思路:

如果不要求時間複雜度為o(1),我們可以找出p的前驅結點,然後很容易就刪除p。

現在要求時間複雜度為o(1),因為p不是最後乙個結點,知道結點p我們可以刪除p的後繼結點,那麼我們可以把p的後繼結點元素的值賦給p結點元素的值。

adt定義如下

#define elemtype int

typedef struct lnodelnode,*linklist;

演算法實現:

void deletenode(lnode* &p)

拓展:如果刪除的結點p可能是最後乙個結點,怎麼辦。

解題思路:此時只能保證刪除結點的平均時間複雜度為o(1),當p不是最後乙個結點,時間複雜度為o(1),當p是最後乙個結點時,時間複雜度為o(n)。

演算法實現:

void deletenode(linklist &l,lnode* &p)

else //如果p是最後乙個結點

} }

}

單鏈表結點刪除

本題要求實現兩個函式,分別將讀入的資料儲存為單鏈表 將鍊錶中所有儲存了某給定值的結點刪除。鍊錶結點定義如下 truct listnode struct listnode readlist struct listnode deletem struct listnode l,int m 函式readli...

習題11 8 單鏈表結點刪除

本題要求實現兩個函式,分別將讀入的資料儲存為單鏈表 將鍊錶中所有儲存了某給定值的結點刪除。鍊錶結點定義如下 struct listnode struct listnode readlist struct listnode deletem struct listnode l,int m 函式readl...

實驗11 2 8 單鏈表結點刪除

本題要求實現兩個函式,分別將讀入的資料儲存為單鏈表 將鍊錶中所有儲存了某給定值的結點刪除。鍊錶結點定義如下 struct listnode 函式介面定義 struct listnode readlist struct listnode deletem struct listnode l,int m ...