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灯, 水草

请输入看板名称,例如:e-shopping站内搜寻

TOP