[問題] 如何刪除鏈節串列的第一個節點 (Node)?
看板C_and_CPP (C/C++)作者PICASSO1 (Pablo Picasso G.)時間5年前 (2020/02/27 11:23)推噓6(6推 0噓 14→)留言20則, 7人參與討論串1/1
開發平台(Platform): (Ex: Win10, Linux, ...)
Linux Fedora Core 13
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
gcc version 4.4.4 20100503 (Red Hat 4.4.4-2) (GCC)
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
(NONE)
問題(Question):
想請教一下各位,最近我在練習撰寫鏈節串列 (Link List)刪除節點的功能,自己寫了一
段程式碼,如下:
http://codepad.org/Thc6TKDW
程式功能如下:
1. 用while loop來建立一組Link List,預計可以輸入5組;若輸入0則是直接跳出;
2. 先展現一次剛剛所輸入的內容;
3. 輸入所要刪除的節點。
餵入的資料(Input):
預期的正確結果(Expected Output):
我的測試方法如下 (請看鍵盤上方的數字鍵和字母,因為這樣最方便輸入):
1. INPUT [NO / TEXT]: 1 / QQQQ; 2 / WWWW; 3 / EEEE
刪除最後一組 (3)和刪除中間那一組 (2),都沒問題。
2. INPUT [NO / TEXT]: 1 / QQQQ; 2 / WWWW; 2 / EEEE
故意輸入相同的2組,然後刪除2,也沒有問題。
錯誤結果(Wrong Output):
程式碼(Code):(請善用置底文網頁, 記得排版,禁止使用圖檔)
補充說明(Supplement):
3. 我的問題是:當我要刪除第1筆資料的時後,就會出現記憶體錯亂的狀況;我在Google
輸入「Link List Delete」第一筆資料就是「Link List Delete First Node C」,
表示很多人都遇到這種狀況,我參考的網址如下:
https://www.geeksforgeeks.org/linked-list-set-3-deleting-node/
我的設計是─用search_and_delete_node(); 函式去做整個Link List的搜尋,如果找到
了,就用delete_node(); 函式刪除。
現在看起來,好像是這一段Code出了問題:
if (current != (struct data *)NULL && current->val == value) {
// 把第2個節點的記憶體位置設定給head,變成Link list的頭!
head = current->next;
free((void *)current);
return;
}
有高手知道該如何修正嗎?謝謝!
--
◢ _▃_ 老婆,我下班回來了,還買了禮物要... ╔═════════════╗
█ 囧 老婆,我下班回來了,還買了禮物要... ║ ║
] /■\ 老婆,我下班回來了,還買了禮物要... ║ 門的另一端,世界的真實 ║
█ || ︵︵bβ 技術不錯嘛!"○ ○" 哇啊~好緊! ║ ║
◤◥◣◥◣ (|\ )) -(啪~啪!) ║ @ Pablo Picasso G. ║
◥██◣ (噗滋!噗滋!)-/`○r27\"-(啊~喔~嗯~)╚═════════════╝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.44.173.127 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1582773830.A.E92.html
→
02/27 11:31,
5年前
, 1F
02/27 11:31, 1F
→
02/27 11:53,
5年前
, 2F
02/27 11:53, 2F
→
02/27 11:54,
5年前
, 3F
02/27 11:54, 3F
→
02/27 11:55,
5年前
, 4F
02/27 11:55, 4F
→
02/27 11:55,
5年前
, 5F
02/27 11:55, 5F
推
02/27 12:40,
5年前
, 6F
02/27 12:40, 6F
→
02/27 12:40,
5年前
, 7F
02/27 12:40, 7F
→
02/27 12:42,
5年前
, 8F
02/27 12:42, 8F
→
02/27 12:42,
5年前
, 9F
02/27 12:42, 9F
→
02/27 12:42,
5年前
, 10F
02/27 12:42, 10F
推
02/28 11:42,
5年前
, 11F
02/28 11:42, 11F
→
02/28 11:42,
5年前
, 12F
02/28 11:42, 12F
推
02/29 02:23,
5年前
, 13F
02/29 02:23, 13F
→
02/29 02:27,
5年前
, 14F
02/29 02:27, 14F
推
02/29 02:29,
5年前
, 15F
02/29 02:29, 15F
→
02/29 02:29,
5年前
, 16F
02/29 02:29, 16F
→
02/29 02:30,
5年前
, 17F
02/29 02:30, 17F
推
02/29 02:34,
5年前
, 18F
02/29 02:34, 18F
推
03/04 22:06,
5年前
, 19F
03/04 22:06, 19F
→
03/12 00:14,
5年前
, 20F
03/12 00:14, 20F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章