java - 堆栈和队列混淆

时间:2015-07-01 18:32:19

标签: java

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

第一种方式:

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 个答案:

答案 0 :(得分:0)

我不是百分之百地确定你的意思。 查看您的第一个代码段,我们可以看到您声明了类StackMethods。在第二个实例中,您将实例化类StackMethods的对象。 因此,您在第二个代码片段的main方法中所做的只是创建一个对象,该对象调用您在上面的类中声明的方法push(),pop()和display()。你没有实际实现两个数据结构,只是一个基本的堆栈。

好消息是,你已经掌握了堆栈的概念,因为你实现了这个类&#39; StackMethods&#39;总的来说是正确的。

关于队列和堆栈之间的区别,this question可能会对您有所帮助:

如果这个问题没有回答你的问题,我只是误解了它,请发表评论然后让我知道,以便我能帮助你提高一点。