我正在学习堆栈数据结构。我想创建一个动态数组。当超过大小时,我想创建一个新数组。
程序输出:
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;
}
关于java - 在Java中为堆栈结构创建动态数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40957469/