11 8 刪除結點

2021-09-10 23:00:30 字數 1466 閱讀 3121

刪除結點:輸入若干個正整數(輸入-1為結束標誌)建立乙個單向鍊錶,再輸入乙個整數m,刪除鍊錶中值為m的所有結點。試編寫相應程式。

鍊錶結點定義:

struct listnode ;
函式介面定義:

struct listnode *readlist();

struct listnode *deletem(struct listnode *l, int m);

函式readlist從標準輸入讀入一系列正整數,按照讀入順序建立單鏈表。當讀到−1時表示輸入結束,函式應返回指向單鏈表頭結點的指標。

函式deletem將單鏈表l中所有儲存了m的結點刪除。返回指向結果煉表頭結點的指標。

思路分析

首先通過readlist讀入正整數。這裡要分兩種情況先後進行討論:1.原煉表為空;2.原煉表非空。

接著通過deletem函式刪除結點。在處理的時候,先判斷煉表表頭的資料是否等於m,如果是m,需要刪除直到表頭資料不為m。然後再對鍊錶中的資料逐一判斷是否為m。

源**

// 11-8

// 刪除結點

#include #include struct listnode ;

struct listnode *readlist();

struct listnode *deletem(struct listnode *l, int m);

void printlist(struct listnode *l)

printf("\n");

}int main()

struct listnode *readlist()

else

tail = p;

scanf("%d", &data); }

return head;

}struct listnode *deletem(struct listnode *l, int m)

// 鍊錶空

if (l==null)

// 要被刪除結點為非表頭結點

ptr1 = l;

ptr2 = l->next; // 從表頭的下乙個結點搜尋所有符合刪除要求的結點

while (ptr2!=null)

else

ptr2 = ptr1->next; // ptr2指向ptr1的後乙個結點 }

return l;

}

結果

習題11 8 單鏈表結點刪除

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

習題11 8 單鏈表結點刪除 20分

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

習題11 8 單鏈表結點刪除 20分

struct listnode 函式介面定義 struct listnode readlist struct listnode deletem struct listnode l,int m 函式readlist從標準輸入讀入一系列正整數,按照讀入順序建立單鏈表。當讀到 1時表示輸入結束,函式應返回...