【问题标题】:What are the first and the last elements in stack data structure?堆栈数据结构中的第一个和最后一个元素是什么?
【发布时间】:2016-12-09 20:16:22
【问题描述】:

我研究过堆栈作为数据结构,我知道它们根据 LIFO(后进先出)规则工作。我遇到了一个问题,要求我检索堆栈的第一个元素以及最后一个元素。因为我宁愿让更有经验的用户对我的知识进行双重检查,所以我很想知道堆栈中的哪些元素被认为是第一个和最后一个?

例如,让我们按 1,2,3,4,5,6 的顺序入栈。哪些是堆栈的前两个元素,哪些是最后两个?

【问题讨论】:

  • 你有一个棘手的问题。提出问题的人应该定义“第一个”和“最后一个”,因为它们是模棱两可的。毕竟,后进先出意味着最后一个条目是第一个条目。那么他们想要先进先出,还是后进后出?谈到堆栈时,最好使用术语“顶部”和“底部”。

标签: data-structures stack element


【解决方案1】:

将一摞从上到下想象成现实生活中的一摞书会很有帮助。如果您将第 1 本书推入堆栈,然后将第 2-6 本书推入堆栈,则您的堆栈如下所示:

6
5
4
3
2
1

所以 1 和 2 是您的前两个元素(书籍),而 6、5 是您的最后一个和倒数第二个元素。因为第 6 本书是最后一本书,所以它是第一个从堆栈中出来的(pop 在编程术语中),否则你的书堆会掉下来!

【讨论】:

  • 这是一种解释。我也知道有人会说 6 是堆栈中的第一项。 “第一个”是指“要放在堆栈上的第一个项目”还是意味着“将从堆栈中弹出的第一个项目”?根据我的经验,程序员的答案在两者之间相当平均。
  • 感谢您的回答!
  • 如果您使用 LIFO 的扩展(对于队列,FIFO)我的描述与首字母缩略词一致。
【解决方案2】:

在这个问题上,人们可能有不同的看法。最好的办法是了解手头问题的要求。就像如果您在在线评委上解决堆栈问题,那么您可以从问题陈述/示例中获得澄清,或者如果您在专业工作中解决问题,您可以从需求分析中获得澄清。最后,如果您能解决您应该解决的问题,那么您将顶部元素称为第一个元素或将底部元素称为第一个都没有关系。

【讨论】:

    猜你喜欢
    • 2016-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-15
    • 2013-01-14
    • 1970-01-01
    • 2011-06-06
    • 2013-12-01
    相关资源
    最近更新 更多