2015-07-01 80 views
2

这两种处理堆栈和队列的方式有什么区别?这两个叫什么?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(); 
    } 
} 

也在他们是正确的?试图学习这些很好,但在互联网上的解释是模糊的这些..

回答

0

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

好消息是,总而言之,您掌握了堆栈的概念,因为您的类StackMethods的实现是正确的。

在问候队列和堆栈之间的区别是什么,this question可以帮助你:

在这种情况下,没有回答你的问题,我只是误会了吧,请你只发表评论,让我知道,我可以尝试帮助你更好一点。

+0

这个问题被格式化错误弄乱了,我试图理解的是数组和堆栈之间的区别,像这样开始,只是似乎没有创建一个负载的方法来推和弹.. Stack s = new Stack (); //之后是方法 – heathbm

+0

啊好的!因此,当您调用Stack 之类的东西时,您可以使用Java Collections Framework。所以Oracle的一些老兄已经为你实施了Stack。该实现中的堆栈很可能基于List,所以它的大小没有限制,因为它使用了指针结构。它也是通用的。所以你可以使用它基本上任何可能的基类,不仅像你的实现整数。它支持比Stack更多的操作。以下是指向Java文档的链接: http://docs.oracle.com/javase/7/docs/api/java/util/Stack.html – Benjamin

+0

那么是否需要手动创建带有数组的堆栈? – heathbm