簡體   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