Programming 板


LINE

※ 引述《yauhh (哟)》之铭言: [43] :



※ 发信站: 批踢踢实业坊(ptt.cc)
: ◆ From: 218.160.212.40 : → loveme00835:你真的很屌...回得出这个 140.121.197.115 02/25 13:14 : → loveme00835:stack 可以实作 linked list, 那stack 140.121.197.115 02/25 13:35 : → loveme00835:要用什麽实作? 难道用 linked list? 140.121.197.115 02/25 13:36 : → adrianshum:楼上大概没看懂原po的意思.你把linked 61.238.156.185 02/25 16:45 : → adrianshum:list 看成是一种实作那当然觉得别扭.原 61.238.156.185 02/25 16:46 : → adrianshum:po想说的,就是你可以把 array/linked 61.238.156.185 02/25 16:46 : → adrianshum:list 想成一种interface 一种协定. 61.238.156.185 02/25 16:47 : → adrianshum:那麽, 底层用任何的stack impl 来达成y 61.238.156.185 02/25 16:50 : → adrianshum:这协定, 就是原po 要解决的问题 61.238.156.185 02/25 16:51 : → loveme00835:这个叫做介面配接, 不叫实作 140.121.197.115 02/25 16:54 : → loveme00835:而原PO问的就是"制作" 140.121.197.115 02/25 16:56 我乾脆来回文好了. 你所谓的 "配接" 和实作根本是没有冲突的概念. 重点的是你大概还是不太明白原 po 的用意: 大家说: 用 stack 实作 linked list 或 array 不合理, 是建基於大家把 array & linked list 想成是一 种实作. 不过, 为什麽不能把 array & linked list 想成是一种 介面呢? 举个例子, 假设我写个 Stack impl, 是建基於任一 List, 大家会觉得很正常. e.g. interface List<T> { T get(int index); void insert(T data, int index); T remove(int index); } // 很正常的基本 List interface interface Stack<T> { push(T); T pop(); } // 基本的 Stack Interface class MyStackImpl<T> { private list List<T>; MyStackImpl(List<T> list) { this.list = list; } void push(T data) { this.list.insert(data, 0); } T pop() { return this.list.remove(0); } }; 这种 "以 list 来实作 stack" 大家应该看得很舒服对吧? 用 stack 实作 Linked List 又是什麽一回事? 我们为什麽不可以把 LinkedList 想成一个 interface? interface LinkedList<T> { Node<T> getHead(); } interface Node<T> { T getData(); Node<T> getNext(); setNext(LinkedListNode<T> next); } 为什麽我们不可以利用 stack 来实作这样的 interface? class MyLinkedList<T> { Stack<MyNode<T>> nodes; class MyNode<T> implements Node<T> { MyLinkedList<T> myList; ... Node<T> getNext() { Stack<T> tmpNodeStack = new StackImpl<T>(); myList.nodes 一个个 pop 出来, 直到找到 this; result = myList.pop(); 把 result & tmpNodeStack 一个个push 回 myList; return result; } // setNext 不难自己想了吧? } ..... } 这样不就是 "利用 stack 来实作 linked list" 了吗? 最重点的是, 你要明白, 你看起来好像是实作手段的东西 (linked list), 经过思考和设计, 其实也可以设计成一个协定. 没错, 这样的 LinkedList interface 实际应用上未必有什麽价值, 可是 整篇文章中最有价值的不是 LinkedList interface, 而是怎麽去看事物和抽象化 的过程. Alien --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.238.156.185 ※ 编辑: adrianshum 来自: 61.238.156.185 (02/25 17:29)
1F:→ Lordaeron:你这样只能叫用link来实作link118.160.171.237 02/26 01:31
2F:→ Lordaeron:Link是资料存放的方法, stack是处理资料118.160.171.237 02/26 01:31
3F:→ Lordaeron:的方式. 两个是不同的东西118.160.171.237 02/26 01:32
4F:→ adrianshum:这里要表达的就是如果把 Linked List 183.179.61.91 02/26 04:38
5F:→ adrianshum:抽象化成一种 interface, 代表其 data 183.179.61.91 02/26 04:39
6F:→ adrianshum:iteration 的方法,这里的 Linked List 183.179.61.91 02/26 04:39
7F:→ adrianshum:就不再是一种资料存放的方法。这里和上 183.179.61.91 02/26 04:40
8F:→ adrianshum:一篇要说的大概就是这种意思。实际上出 183.179.61.91 02/26 04:41
9F:→ adrianshum:来的结果可能没有什麽价值可是重点是在 183.179.61.91 02/26 04:41
10F:→ adrianshum:於抽象化的思考过程。 183.179.61.91 02/26 04:42
11F:→ yoco315:通常(通常)array会要求O(1) random access 118.160.111.92 02/26 14:20
12F:→ yoco315:可能的话还会要求连续记忆空间.. 118.160.111.92 02/26 14:20







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