gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 02:43:25 26 4
gpt4 key购买 nike

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

程序输出:

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com