Re: [問題] linkedlist 一個比較較不常見的問題

看板C_and_CPP (C/C++)作者 (追夢)時間14年前 (2012/04/21 21:01), 編輯推噓10(10028)
留言38則, 16人參與, 最新討論串2/4 (看更多)
其實我不懂 為什麼這樣的問題不能問 得要被版主刪掉? 是說這個版只能問語法嗎? 硬是要我先寫出code來的話 那就只能這樣寫 不過沒有比原文多初什麼info就是 struct nodeTp{ int value; struct nodeTp *next; }; struct nodeTp *A, *B, *C; A->next = B; B->next = C; findPrvNode(B); struct nodeTp* findPrvNode(struct nodeTp *in) { // 該怎麼return previous node of in } ※ 引述《Dreamer77 (追夢)》之銘言: 給定一個linkedlist 以及一個指標 這個指標指向這linkedlist 內部的某node(非head) 該怎麼找到這個node的前一個node呢? 非double linkedlist 是一個單向的 想不到有什麼方法... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.59.236.246

04/21 16:00,
簡單起見, 在開頭多塞一個node, 一個迴圈就找得了
04/21 16:00

04/21 16:02,
不過...你該不會程式碼還沒寫吧?
04/21 16:02

04/21 16:13,
回1F, 問題就是你不知道『開頭』
04/21 16:13

04/21 16:15,
資訊只有一個linkedlist 以及一個非指向head node的指標
04/21 16:15

04/21 18:28,
哈哈~ 什麼叫不知道? 能叫作linked list的ADT必然有對
04/21 18:28

04/21 18:28,
應的操作, 哪來資訊很少的論點
04/21 18:28

04/21 18:33,
請忽略樓上推文, linked list是basic data structure
04/21 18:33

04/21 18:33,
就算不用透過提供的操作, 也可以跑得出來
04/21 18:33

04/21 18:56,
所謂的不知道就是你不能使用或是你看不到 請遵守題目
04/21 18:56

04/21 19:34,
既然跟C語言無關, 就到這裡為止吧... 我還以為會有COD
04/21 19:34

04/21 19:34,
E拯救這篇
04/21 19:34

04/21 20:48,
到這邊?為什麼跟C無關?難道只能停留在問語法嗎?
04/21 20:48

04/21 20:48,
感覺版大也太濫權了吧? 從頭到尾的口氣都怪怪的
04/21 20:48
-- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.59.236.246

04/21 21:02, , 1F
如果現在有 A->B->C->D 以及 E->B->C->D
04/21 21:02, 1F

04/21 21:02, , 2F
單獨從 A 或 E 來看他們都是合法的 linked-list
04/21 21:02, 2F

04/21 21:03, , 3F
現在是傳入 B 的話, 該怎麼回答?
04/21 21:03, 3F

04/21 21:07, , 4F
我想版主的意思是,不要回新文佔版面,不是要刪你原文
04/21 21:07, 4F

04/21 21:11, , 5F
樓上好像誤會時間順序了XD
04/21 21:11, 5F

04/21 21:13, , 6F
不是板主問題,是你跑錯版Programming
04/21 21:13, 6F

04/21 21:15, , 7F
ok 如果說是這版只能問語法那我就懂了
04/21 21:15, 7F

04/21 21:16, , 8F
這是一個政治上的議題,他必須要優先維護有直接提到語法
04/21 21:16, 8F

04/21 21:16, , 9F
的主題,所以將你的文章s,讓後面的人不要回文在原地討論
04/21 21:16, 9F

04/21 21:17, , 10F
當然你只要補上實際的程式碼,明面上大家都好過
04/21 21:17, 10F

04/21 21:32, , 11F
哪來的題目? 照理講是無解
04/21 21:32, 11F

04/21 21:42, , 12F
這只能掃記憶體用猜的吧
04/21 21:42, 12F

04/21 21:43, , 13F
如果照這題程式碼運算,直接改掉findPrvNode的caller的
04/21 21:43, 13F

04/21 21:43, , 14F
判斷碼。就像破解序號驗證有時候靠得也不是正確的序號
04/21 21:43, 14F

04/21 21:44, , 15F
原來是這麼底層的問題 Orz
04/21 21:44, 15F

04/21 22:12, , 16F
"給定linkedlist", 所以我應該已經知道head了不是嗎?
04/21 22:12, 16F

04/21 22:12, , 17F
然後從head開始依序找下去去比對nodeTs的記憶體位置 就可
04/21 22:12, 17F

04/21 22:30, , 18F
...哪有可能不知道head
04/21 22:30, 18F

04/21 22:32, , 19F
findPrvNode(B)這是在幹嘛 根本不用找就知道是A了啊
04/21 22:32, 19F

04/21 22:38, , 20F
樓上 A只是新的list的head....
04/21 22:38, 20F

04/21 23:00, , 21F
從第一篇的推文看來, 原Po似乎認為head是未知!?
04/21 23:00, 21F

04/21 23:14, , 22F
耶 有跟考官詢問能否使用head,是否雙向,是否cycle 皆no
04/21 23:14, 22F

04/21 23:39, , 23F
...搞不好考官是要考原po有沒有說出"做不到"的勇氣orz
04/21 23:39, 23F

04/21 23:41, , 24F
或者是有沒有大吼「這種鬼東西你寫給我看看」的勇氣 XD
04/21 23:41, 24F

04/21 23:43, , 25F
或者認清楚他在暗示你這個公司沒有比較好
04/21 23:43, 25F

04/21 23:43, , 26F
(咦, 沒說是公司面試對吧?XD)
04/21 23:43, 26F

04/21 23:54, , 27F
一種可能是溝通誤差XD
04/21 23:54, 27F

04/22 00:17, , 28F
或者不曉得去Prob_Solve會不會有答案@_@"
04/22 00:17, 28F

04/22 00:43, , 29F
跳個tone.我不知道原題怎出的,但如果有用到new/malloc,這
04/22 00:43, 29F

04/22 00:44, , 30F
在前處理前蠻有機會偷塞額外資訊進記憶體..
04/22 00:44, 30F

04/22 02:30, , 31F
會希望有先寫出code 是怕說你連試都沒試過
04/22 02:30, 31F

04/22 02:30, , 32F
純粹只是伸手牌上來要答案而已
04/22 02:30, 32F

04/23 04:42, , 33F
在findPrvNode函數的scope內可以找到的node只有in和in後面
04/23 04:42, 33F

04/23 04:44, , 34F
的node。把所有能找到的node都檢查過,如果沒有就回傳NULL
04/23 04:44, 34F

04/23 04:45, , 35F
如果找到一個或多個node的next指向in,則回傳第一個。
04/23 04:45, 35F

04/23 04:49, , 36F
如果要找的node不在in的後面,就要提供方法讓這些node可以
04/23 04:49, 36F

04/23 04:50, , 37F
在函數的scope內可以被存取。
04/23 04:50, 37F

04/23 04:55, , 38F
題目好像有限定不是環狀的list,所以應該只要return NULL
04/23 04:55, 38F
文章代碼(AID): #1Fag-l-M (C_and_CPP)
文章代碼(AID): #1Fag-l-M (C_and_CPP)