本題要求實現兩個函式,分別將讀入的資料儲存為單鏈表、將鍊錶中所有儲存了某給定值的結點刪除。鍊錶結點定義如下:
struct listnode
;
函式介面定義:
struct listnode *
readlist()
;struct listnode *
deletem
(struct listnode *l,
int m )
;
函式readlist從標準輸入讀入一系列正整數,按照讀入順序建立單鏈表。當讀到−1時表示輸入結束,函式應返回指向單鏈表頭結點的指標。
函式deletem將單鏈表l中所有儲存了m的結點刪除。返回指向結果煉表頭結點的指標。
裁判測試程式樣例:
#include
#include
struct listnode
;struct listnode *
readlist()
;struct listnode *
deletem
(struct listnode *l,
int m )
;void
printlist
(struct listnode *l )
printf
("\n");
}int
main()
/* 你的**將被嵌在這裡 */
輸入樣例:
10
1110
1210-1
10
輸出樣例:
11
12
刪除一共三點要注意:
1,保證頭節點不被刪除,所以首先需要乙個迴圈;
2,如果全部都刪了就直接返回null,所以需要加乙個判斷語句if;
3,需要2個指標p,q,乙個存當前節點,乙個移動到下乙個節點。
(建立鍊錶的函式我就不寫了,就是用尾插法)
struct listnode*
deletem
(struct listnode* l,
int m)
/*保證第乙個節點不等於要刪除的數*/
if(l==
null
)/*這個判斷處理全部刪除的情況*/
p = l;
q = l->next;
while
(q)/*如果只剩乙個數滿足要求就直接退出迴圈,所以只有q*/
else
q = p->next;
/*這裡用到是p指標的next,是因為如果 q 滿足條件被刪除之後就找不到原來的 q 了*/
}return l;
}
實驗11 2 8 單鏈表結點刪除 (20 分)
實驗11 2 8 單鏈表結點刪除 20 分 本題要求實現兩個函式,分別將讀入的資料儲存為單鏈表 將鍊錶中所有儲存了某給定值的結點刪除。鍊錶結點定義如下 struct listnode 函式介面定義 struct listnode readlist struct listnode deletem st...
實驗11 2 8 單鏈表結點刪除 20分
本題要求實現兩個函式,分別將讀入的資料儲存為單鏈表 將鍊錶中所有儲存了某給定值的結點刪除。函式介面定義 struct listnode readlist struct listnode deletem struct listnode l,int m 函式readlist從標準輸入讀入一系列正整數,按...
實驗11 2 8 單鏈表結點刪除 20分
題目 本題要求實現兩個函式,分別將讀入的資料儲存為單鏈表 將鍊錶中所有儲存了某給定值的結點刪除。鍊錶結點定義如下 struct listnode 函式介面定義 struct listnode readlist struct listnode deletem struct listnode l,int...