[問題] Linked list和雙重指標
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
問題(Question):
最近練習Linked list時總有個疑惑
我先宣告
typedef struct listnode *listnodePtr;
typedef struct listnode
{
int num;
listnodePtr nextPtr;
}Listnode;
第一個節點假設由 listnodePtr first指著
書上在討論刪除節點時用的函數叫 void delete(*listnodePtr startPtr,char value)
事實上 不論插入或刪除 函數都會用到雙重指標
我不太懂為何如此
我寫出我的想法 請各位指出錯誤點 感謝
我想用單純一個的指標就好
如果要刪除第一個節點
可先在函數中宣告一個 listnodePtr temp 去記住要刪除的startPtr
再將startPtr指向下個節點 也就是
temp=startPtr 此時temp的內容 也就是他存的記憶體位置跟startPtr的內容一樣
然後
startPtr=startPtr->nextPtr
最後free(temp)
如此 就不需用到雙重指標 只需要將first傳進函數中就可以了吧?
也就是改寫成void delete(listnodePtr startPtr,char value)
新手發言 如有可笑之處 還請大家多多包涵 感謝
餵入的資料(Input):
預期的正確結果(Expected Output):
錯誤結果(Wrong Output):
程式碼(Code):(請善用置底文網頁, 記得排版)
補充說明(Supplement):
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.50.57.101
推
10/31 00:20, , 1F
10/31 00:20, 1F
→
10/31 00:21, , 2F
10/31 00:21, 2F
抱歉可能我對C的掌握度還不夠
first不是會改為指向下一個node嗎?(如果只刪除第一個node)
※ 編輯: deangogi 來自: 123.50.57.101 (10/31 00:23)
推
10/31 00:31, , 3F
10/31 00:31, 3F
→
10/31 19:02, , 4F
10/31 19:02, 4F
→
10/31 19:07, , 5F
10/31 19:07, 5F
→
10/31 20:35, , 6F
10/31 20:35, 6F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):