Programming 板


LINE

※ 引述《jimmy5566 (jimmy)》之銘言: : 有個問題覺得怪怪的 : 想釐清一下 : 就是stack和queue都可以用array和linked list來製作 : 那linked list可以用array和stack來製作嗎? : 麻煩了~謝謝 從你的問答中可以看到一些事情,第一,你思考的可能是單純的對立關係: 如果這邊這些可以用那邊的東西實作,則那邊的東西應該也可以用這邊的東西實作. 雖然事實可能不是這麼單純. 不過,如果你還是學生,恭喜你,你有足夠的自由空間 可以做這樣的思考,好處是一來別人可能不會想這種事情,所以你有投入時間思考 這問題的機會,二來是社會現實還不夠近逼甚至傾軋得你不得想這個問題. 從你的問答中所看到的第二個情況,你可能還沒熟識 stack, queue, array, linked list 的特徵. 有些資料結構會很認真把這些項目抽象化, 像 Horowitz 先生的那本經典的資料結構教科書,會直接用ADT表達. 你可以先看看那樣的書. 你可以仔細想想這些資料結構或資料格式的特徵: Array: 一堆 key-value 配對, 所有的 key 是連續整數. Linked list: 一堆有限數目的物件,任何一個對另一個有前後關係. Stack: 與 linked list 類似之處是有限數目的物件,物件有前後關係. 並且加上 stack 自己的限制,只有一個端點可以將新物件加進去 產生另一個 stack, 或是把存在的物件拿走,剩下的也是 stack. queue: ... 如果要解 "用 stack 製作 linked list" 這樣的問題,你可以先把 linked list 所擁有的特徵抓出來,像是二個物件之間有前後關係,以及它還可以刪掉一些中間 的物件,剩下的也構成一個 linked list. 再來看看 stack 提供了哪些特徵 可以達到 linked list 所需要的功能: 新增, 刪除, 隨意位置刪除, 前進定位, 回溯等等, 看用 stack 該怎麼組合可以做得到. 例如,令有一堆 stack S[1..N], 任何一個 stack S[i] 的規格為: S[i].push(D) => S[i]' ;; S[i]'是S[i]加了一項物件D S[i]'.pop => { D, S[i] } ;; 同上,而pop之後取出資料並得到另一stack 你可以說以下這樣的結構擁有 linked list 一部份的特徵: LL = S[1].push(S[2].push(S[3].push(...S[N].push(nil)))...) 因為 LL.next = S[1].pop = { D[1], LL' = S[2] } LL'.next = S[2].pop = { D[2], LL'' = S[3] } ... 這樣就是 linked list 前進並定位的功能. 第三個所見到的事情,很明顯,有蠻多人會拒絕認真回答你的問題. 不過,仔細 Google, 用正確的關鍵字尋找,仍可以找得到有人問過這樣的問題: 像是 "用 stack 可不可以做出 linked list", 然後他得到的回答是: "要問就先檢查是不是問對問題." 一般來說,人可能都用 C++ 背景知識 回答你說:哎呀,不可能做得到的啦. 不過,既然你沒有說你是在思考 C++ 的東西, 你也可以把所謂 array 當作抽象結構來思考. 誰管你怎麼想,這就是學習. 不過最後回歸到特定電腦語言領域中的時候,就要把現實的範圍限制加上去. 我想這些是你該釐清的. --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.160.212.40
1F:→ loveme00835:你真的很屌...回得出這個140.121.197.115 02/25 13:14
2F:→ loveme00835:stack 可以實作 linked list, 那stack140.121.197.115 02/25 13:35
3F:→ loveme00835:要用什麼實作? 難道用 linked list?140.121.197.115 02/25 13:36
4F:→ adrianshum:樓上大概沒看懂原po的意思.你把linked 61.238.156.185 02/25 16:45
5F:→ adrianshum:list 看成是一種實作那當然覺得別扭.原 61.238.156.185 02/25 16:46
6F:→ adrianshum:po想說的,就是你可以把 array/linked 61.238.156.185 02/25 16:46
7F:→ adrianshum:list 想成一種interface 一種協定. 61.238.156.185 02/25 16:47
8F:→ adrianshum:那麼, 底層用任何的stack impl 來達成y 61.238.156.185 02/25 16:50
9F:→ adrianshum:這協定, 就是原po 要解決的問題 61.238.156.185 02/25 16:51
10F:→ loveme00835:這個叫做介面配接, 不叫實作140.121.197.115 02/25 16:54
11F:→ loveme00835:而原PO問的就是"製作"140.121.197.115 02/25 16:56
12F:→ yauhh:要怎麼解釋當然隨你高興囉,不過,別以為全世218.160.211.114 02/25 22:21
13F:→ yauhh:界只有C語言才叫作程式語言218.160.211.114 02/25 22:22
14F:→ yauhh:沒有人規定array只准是C的記憶體對應array,218.160.211.114 02/25 22:22
15F:→ yauhh:甚至也沒有人規定array非得是隨機存取.218.160.211.114 02/25 22:23
16F:推 dryman:推,我比較好奇要如何做insert.. 220.136.180.21 02/26 00:56







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Soft_Job站內搜尋

TOP