Java设计一个名为Queue的类用于存储整数。像栈一样,队列具有元素。在栈中,元素以“后进先出”的方式

获得。在队列中,元素以“先进先出”的方式获取。该类包含:一个名为element的int[]类型的数据域,保存队列中的int值。一个名为size的数据域,保存队列中的元素个... 获得。在队列中,元素以“先进先出”的方式获取。该类包含:
一个名为element的int[]类型的数据域,保存队列中的int值。
一个名为size的数据域,保存队列中的元素个数.
一个构造方法,使用默认的容量8来创建一个Queue对象。
方法enqueue(int v),用于将v加入到队列中。
方法dequeue(),用于从队列中移除元素并返回该元素。
方法empty(),如果队列是空的话,该方法返回true。
方法getSize(),返回队列的大小。
初始数组的大小为8,一旦元素个数超过了大小,数组大小将会翻倍。如果一个元素从数组的开始部分移除,你需要将数组中的所有元素往左边改变一个位置。编写一个测试程序,增加从1到20的21个成员,然后将这些数字移除并显示它们。
这是我写的,但死循环,求大神修改

public class Queue {
private int[] elements;
private int size;
public static final int DEFAULT_CAPACITY = 16;

public Queue(){
elements = new int[DEFAULT_CAPACITY];
}
public Queue(int capacity){
elements = new int[capacity];
}
public void enqueue(int v){
if(size>=elements.length){//数组扩容
int[] temp = new int[elements.length*2];
System.arraycopy(elements, 0, temp,0,elements.length);
elements = temp;
}
elements[size++]=v;
}
public int dequeue(){//先进先出
int index = 0;
return elements[index++];
}
public boolean empty(){
return size==0;
}
public int getSize(){
return size;
}
}

public class TestQueue {

public static void main(String[] args) {
// TODO Auto-generated method stub
Queue test = new Queue();
for(int i=1;i<=20;i++)
test.enqueue(i);
while(!test.empty()){
System.out.print(test.dequeue()+" ");
}
}

}
展开
 我来答
雪飞潇潇
2017-06-30 · TA获得超过6273个赞
知道大有可为答主
回答量:1968
采纳率:91%
帮助的人:844万
展开全部

参考代码和注释如下

简单测试了下,如果有问题接着在讨论

public class Queue {
private int[] elements;
public static final int DEFAULT_CAPACITY =8;//默认长度8
private int size = 0;

public Queue() {
elements = new int[DEFAULT_CAPACITY];
}

public Queue(int capacity) {
elements = new int[capacity];

}

public void enqueue(int v) {
if (size >= elements.length) {// 数组扩容
int[] temp = new int[elements.length * 2];
System.arraycopy(elements, 0, temp, 0, elements.length);
elements = temp;
}
elements[size++] = v;

}

public int dequeue() {// 先进先出
if (empty()) {
throw new RuntimeException("异常");
}

int x = elements[0];// 先把第一个元素保存出来

// 左移一位
// int[] temp = new int[elements.length];
// System.arraycopy(elements,1, temp, 0, elements.length-1);
// elements = temp;

// 左移一位
for (int i = 0; i < elements.length - 1; i++) {
elements[i] = elements[i + 1];
}
elements[elements.length - 1] = 0;// 外面一般访问不了elements 后面的元素可以不用归零,但是归零了感觉舒服点
size--;
return x;
}

public boolean empty() {
return size == 0;
}

public int getSize() {
return size;
}
}

输出

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式