刪除結點:輸入若干個正整數(輸入-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時表示輸入結束,函式應返回...