为什么将某些东西放在堆栈上称为“推”?


22

根据http://dictionary.reference.com

动词(与宾语一起使用)

  1. 用力压迫或压迫(事物)以将其移开。

  2. 通过施加力以特定的方式移动(某物);推; 开车:把东西推开;推开门

  3. 通过推开障碍来实现或完成:通过人群。

  4. 使延伸或投射;推力。

  5. 敦促或敦促采取某种行动或方针:他的母亲强迫他找工作。

该IMO适合FIFO队列。对此有解释吗?


2
嗯..在以色列,这个类比是枪杂志,因为您需要推入子弹..但我想我更喜欢佩斯喷枪。
GY

@GY-大声笑-我是来这儿确切地说的(佩兹的事)。混蛋!以色列那里有趣的文化虽然……
爱德华·斯特朗奇

我想只是今天我是FGITW!
Scott C Wilson

1
这个问题被问和回答了计算器- stackoverflow.com/questions/420315/stacks-why-push-and-pop。讨论了推和弹出。
2012年

需要“历史”标签。
2012年

Answers:


47

根据传说,原来的一叠饭的名字类似于大学食堂里的一叠饭:您将一叠放在上面,然后(弹簧加载的)一叠饭掉下来,拿走一叠,然后弹出起来一点。因此,“推动”具有向下操作的含义,即使您实际上并没有向下推动平板-只需将其放下,重力就可以完成。“下推式堆栈”仍然是一个常见的短语,堆栈在内存中趋于向下增长(即内存地址减少),尽管这是否与碟形堆栈有关没有疑问。


1
下推可能源自下推自动机。
奥德

11
@Oded我很确定这是相反的。下推自动机是通过下推堆栈增加的有限自动机。
康拉德·鲁道夫2012年

而且您知道有一些可怜的傻瓜正在了解到,由于PC计数为“ up”,因此较低的内存地址位于底部。
菲利普(Philip)

我印象中,起源与那些文档尖峰有关。您知道吗,垂直钉在钉子上,您可以在上面钉一些纸片
Ian

44

考虑一下Pez分配器。这就是您的堆栈思维模型-后进先出。因此,将项目添加到堆栈中需要您按下现有项目以腾出空间。

http://i.stack.imgur.com/VJkYi.jpg


2
mmmmmm ...佩兹!
史蒂文·劳

1
我本来会建议弹药杂志的型号,但是Pez饮水机是更加家庭友善的心理写照。+1,希望我能投票更多。
KeithS 2012年

我很想将Hello Kitty设置为-1,但这并不能解决问题和类比正义。所以我+1。
0xC0000022L 2012年

这就是您向孩子解释“堆栈”的方法:)
Chani 2012年

当您尝试用整包Pez填充它时,StackOverflow就会出现,整个东西在放入之前会从手指上掉下来,因此会散布到整个地方。
2012年

3

FIFO是一个队列-添加到组中的第一个队列是服务的第一个队列。

LIFO是一个堆栈-就像一堆托盘。您总是从堆栈顶部取出一个。

将项目添加到LIFO /堆栈时使用术语“ 推入”,因为在某些自助餐厅中,托盘堆栈位于弹簧加载的表面上。随着更多物品被推入堆栈,整个堆栈会下沉。

从堆栈中删除最上面/最新的项目时,最上面的一项从堆栈顶部“弹出”。


自助餐厅中的一叠盘子通常用来说明一堆数据结构的工作原理,但是您是否有证据表明该术语来自何处?
卡勒布(Caleb)2012年

@ Caleb,TAOCP第1卷(第二版,第237页)暗示它可以,但没有给出引用。前一页讨论了术语“堆栈”和“队列”如何“逐渐成为标准术语”,因此这可能是最早的潜在参考。
mpdonadio

3

后来出现了使用自助餐厅盘子或托盘,佩斯分配器和成堆的书籍的插图。来自维基百科:(带有参考文献)

“堆栈是在1946年由Alan M. Turing(使用术语“埋藏”和“未埋藏”)作为从子程序调用和返回的方法的计算机设计中首次提出的。” 1957年,其他公司又进行了其他工作和申请了专利。我们今天使用的当前堆叠说明可能导致了Turing最初的埋入和未埋入条件演变为推动和弹出。也许这些术语听起来更好。

确切地找到发生这种情况的时间或地点是OP的问题的答案。也许答案被埋在维基百科的参考文献之一中,例如“ Verfahren zur automatischen Verarbeitung von kodierten Daten und Rechenmaschine zurAusübungdes Verfahrens”

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.