理解堆栈(数据结构),堆栈类,链表 - java?

时间:2014-02-06 15:43:48

标签: java data-structures stack

我正在尝试了解数据结构和ADT。 到目前为止,我已经阅读了大量资源,但我并不清楚它们之间的区别是什么。

所以我的理解是堆栈,链表和队列是数据结构,并且有一些名为Stack,Linkedlist作为ADT的类在Java中使用这些数据结构。 但是有些书籍或资源说堆栈是一个集合,其他资源说堆栈是数据结构。我对所有的差异感到非常困惑,并且迷失了如何使用链表实现堆栈。

有人可以解释一下让我更清楚吗?我知道这将是一个非常基本的问题,但我真的需要理解!

非常感谢你!

4 个答案:

答案 0 :(得分:1)

欢迎来到编程世界。每天一个新名词。 ;-)

当您从编程语言不可知的视图中学习时,Stack是一个具有push和pop等操作的逻辑结构。它是一种抽象,一种数学概念,它是一种数据结构。

现在,当我们谈论特定的编程语言(如Java)时,Sun开发人员将几个常用的DATA STRUCTURES实现放入一个他们称之为Collections的组中。在Java世界中,Collections是一个同样具有Java类(http://docs.oracle.com/javase/7/docs/api/java/util/AbstractCollection.html)的概念,其中所有这些结构都继承自,称为AbstractCollection,它还实现了一个名为Collection(http://docs.oracle.com/javase/7/docs/api/java/util/Collection.html)的接口。

因此,概念Stack的Java实现也称为Stack,但正如您从文档中看到的那样,CLASS Stack继承自AbstractCollection(请参阅http://docs.oracle.com/javase/7/docs/api/java/util/Stack.html),因此,它是一个Java Collection。

答案 1 :(得分:0)

也许你会发现解释here很有用。它们带有一个很好的动画(作为java小程序)。

答案 2 :(得分:0)

堆栈是一种特殊类型的集合。这是一种数据结构。

堆栈是一种线性数据结构,您可以在其中拥有一个又一个项目。

堆栈只能做3件事:

  1. 将数据推送到集合的末尾。
  2. Peek - 只查看该系列的最后一项。
  3. Pop - 删除该集合的最后一项。
  4. 您无法在中间或开头插入。除了最后一项之外,您无法查看任何项目(第一项和任何中间项目)。

    堆栈也称为“后进先出”

    为何如此“限制”?现实生活中有几种情况会发生这种情况。在自助餐厅,员工将盘子一个放在彼此的顶部,最顶层的盘子(最后一个)是客户拿出的盘子(先出)。

    我无法得到太多细节但是当你按照操作顺序计算时,堆栈是有用的(甚至是至关重要的)(你可能会给你编程分配,所以你不能依赖你的计算器) ,当你想在网络中找到最短的路线时(例如,找到你和名人之间最短的Facebook朋友路径)。

答案 3 :(得分:0)

数据结构是一种组织数据的方式,以便可以有效地使用它。 这主要包括可以存储什么类型的数据以及如何存储和处理数据。

示例1:我们可以将相同数据类型的元素列表存储在数组数据结构中,在其中可以使用数组的索引访问元素。

示例2:我们可以将相同数据类型的元素列表存储在堆栈数据结构中,在其中可以以后进先出的方式访问元素。

抽象数据类型是您在其中指定所需行为而未指定实现的数据类型。例如Java接口定义了要执行的操作和预期的行为,但是实现被隐藏了。

Java中已经定义了一些类,这些类可为您提供数据结构的行为。其中的一个类是java.util.Stack类,它为您提供可以在Stack上执行的操作,但隐藏了这些操作的实现细节。您可以在我的博客https://hetalrachh.home.blog/2019/12/25/stack-data-structure/上查看有关java.util.Stack类的更多信息。

堆栈可以通过多种方式实现,这意味着使用数组和链接列表之类的不同数据结构来实现后进先出行为。您可以在我的博客http://hetalrachh.home.blog/2020/01/12/stack-implementation-using-array-and-linkedlist-in-java/上找到带有图表的详细说明。