当前位置: 首页 > 知识库问答 >
问题:

java——堆栈和队列混乱

潘修文
2023-03-14

这两种处理堆栈和队列的方法有什么区别?两者都叫什么?

第一种方式:

import java.util.Arrays;

public class StackMethods {
   private int top;
   int size;
   int[] stack ;

    public StackMethods(int arraySize){
       size=arraySize;
       stack= new int[size];
       top=-1;
     }

    public void push(int value){
        if(top==size-1){
            System.out.println("Stack is full, can't push a value");
        }
        else{
            top=top+1;
            stack[top]=value;
           }
    }

    public void pop(){
        if(!isEmpty())
            top=top-1;
        else{
            System.out.println("Can't pop...stack is empty");
            }
    }

    public boolean isEmpty(){
        return top==-1;
    }

    public void display(){
        for(int i=0;i<=top;i++){
            System.out.print(stack[i]+ " ");
        }
        System.out.println();
   }
}

第二种方式:

public class StackReviseDemo {

    public static void main(String[] args) {
        StackMethods newStack = new StackMethods(5);
        newStack.push(10);
        newStack.push(1);
        newStack.push(50);
        newStack.push(20);
        newStack.push(90);

        newStack.display();
        newStack.pop();
        newStack.pop();
        newStack.pop();
        newStack.pop();
        newStack.display();
    }
}

它们是否正确?试图学好这些,但互联网上的解释却模糊不清。。

共有1个答案

安毅
2023-03-14

我不是100%确定你说的两种方式是什么意思。查看您的第一个代码片段,我们可以看到您正在声明类StackMethods。在第二个示例中,您正在实例化类StackMethods的一个对象。因此,在第二个代码段的main方法中,您要做的就是创建一个对象,该对象正在调用您在上面的类中声明的方法push()、pop()和display()。实际上并没有实现两个数据结构,只是实现了一个基本堆栈。

消息是,总体而言,您已经掌握了堆栈的概念,因为类“StackMethods”的实现总体上是正确的。

关于队列和堆栈之间的区别,这个问题可能会帮助您:

如果这没有回答你的问题,我只是误解了它,请发表评论,让我知道,这样我可以尝试帮助你更好一点。

 类似资料:
  • 数字键盘字母组合问题[M]

  • 我正在为我的考试做复习,我遇到了这个问题,我需要在执行以下代码后找到Q1的内容。 数据 普塞多密码 这是我的解决方案 > 如果数字不是0,则将数字推送到堆栈,使堆栈现在变为0 否则,弹出堆栈的前两个元素,因此现在堆栈变为 3.循环堆栈!清空,弹出堆栈并在Q1中排队。所以现在堆栈为空,队列变为空 33是队列中的第一个,5是队列中的最后一个。 我仔细核对了提供的答案,发现我的答案不同 提供的答案 我不

  • 因为它是一个队列,所以它将是FIFO,子字符串将导致输出为:OneWour?因为s.substring()是(3),所以不存在任何值。 最后,我在普林斯顿的CS课上发现了两个问题,但我不知道答案是怎么来的 假设客户机执行(queue)、入队和出队操作的混合序列。入队操作将整数0到9按顺序放入队列;出队列操作打印返回值。下列哪个序列不能发生? 假设执行(堆栈)push和pop操作的混合序列。推送按顺

  • Stack类 栈:(水杯喝水,先进后出) 栈是一种数据结构,是只能在某一端插入和删除的特殊线性表。他按照先进后出的原则存储数据 Enumeration(枚举) hasMoreElements() 测试此枚举是否包含更多的元素 nextElements() 如果此枚举对象至少还有一个可提供的元素,则返回此枚举的下一个元素 代码演示: package day07; import java.util.D

  • 我有一个包含n个元素的队列,前面是。我需要创建一个堆栈,上面有。 它只能通过排队、退队、推送和弹出以及持续存储来完成。与其说我需要一个答案,不如说我需要一个如何解决这个问题的想法。 请不要为我回答这个问题,但是请试着理解我是编程新手,我可以用一个想法来解决这个问题。 这是一种类似河内塔楼的方式吗 这只需要一个恒定的存储空间吗 这不是家庭作业,我只是需要一些关于如何进行的建议。我的第一个想法是,倒转

  • 问题内容: 在JavaScript中实现堆栈和队列的最佳方法是什么? 我正在寻找shunting-yard算法,并且我将需要这些数据结构。 问题答案: var stack = []; stack.push(2); // stack is now [2] stack.push(5); // stack is now [2, 5] var i = stack.pop(); // stack is no