2016-12-04 9 views
1

私はスタックデータ構造を学習しています。私は動的配列を作成したい。サイズを超えると、私は新しい配列を作成したい。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()); 
    } 
} 
+0

書式設定コードと文法エラー。 – Sid

+0

あなたの質問 –

+0

にお答えする場合は、チェックマークを使用して以下の回答を受け入れる必要があります。答えを受け入れることを学んだ。私は良い英語ではありませんが、ı学習英語。おかげで – myvalley

答えて

1

元の配列がいっぱいになったとき、あなたは倍増サイズで新しい配列を作成しているが、その後、あなたが何もしません新しい配列で

にコードを変更し

:削除

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; 
} 
+0

ありがとう:) – myvalley

関連する問題