繁体   English   中英

在 Java 中为堆栈结构创建动态数组

[英]Create a Dynamic Array for Stack structure in Java

我正在学习堆栈数据结构。 我想创建一个动态数组。 当超过大小时,我想创建一个新数组。

程序输出:

java.lang.ArrayIndexOutOfBoundsException: 2
must be :50 40 30

代码如下:

    class Stack{
      int array[];
      int size;
      int top;

      Stack(int size){
        this.size=size;
        array=new int[size];
        top=0;
       }

       public void push(int a){
          if(top>=size){
          int array2[]=new int[size*2];
          for(int i=0;i<size;i++){
            array2[i]=array[i];
          }
          array[top++]=a;
          }
          else{
            array[top++]=a;
          }
        }
        public int pop(){
          return array[--top];
      }
    }

    public class Stack1 {

    public static void main(String[] args) {
       Stack y=new Stack(2);
       y.push(10);
       y.push(20);
       y.push(30);
       y.push(40);
       y.push(50);

       System.out.println(y.pop());
       System.out.println(y.pop());
       System.out.println(y.pop()); 
    }
 }

当原始数组已满时,您正在创建一个大小加倍的新数组,但随后您对新数组什么也不做。

将您的代码更改为:

public void push(int a){
  if(top>=size){
    int array2[]=new int[size*2];
    for(int i=0;i<size;i++){
      array2[i]=array[i];
    }
    array = array2; 
    size *=2;
  }
  array[top++]=a;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM