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

2021-10-19 19:23:31 字數 1429 閱讀 2576

本題要求實現兩個函式,分別將讀入的資料儲存為單鏈表、將鍊錶中所有儲存了某給定值的結點刪除。鍊錶結點定義如下:

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...