首页 > 试题广场 >

( Queue 类)10.6 节给出了一个用于 Stack

[问答题]
 ( Queue 类)10.6 节给出了一个用于 Stack 的类。设计一个名为 Queue 的类用于存储整数。像 栈一样,队列具有元素。在栈中,元素以 “后进先出” 的方式获得。在队列中,元素以 “先进 先出” 的方式获取。该类包含:
 • — 个名为 element 的 int[]类型的数据域,保存队列中的 int 值。
 • 一个名为 size 的数据域,保存队列中的元素个数。
 • — 个构造方法,使用默认的容量 8 来创建一个 Queue 对象。
 • 方法 enqueue(int v), 用于将 v 加人到队列中。
 • 方法 dequeueO , 用于从队列中移除元素并返回该元素。
 • 方法 emptyC), 如果队列是空的话,该方法返回 true。
 • 方法 getSize(), 返回队列的大小。 
画出该类的 UML图并实现这个类,使之初始数坦的大小为 8。一旦元素个数超过了大小, 数组大小将会翻倍。如果一个元素从数组的开始部分移除,你需要将数组中的所有元素往左边 改变一个位置。编写一个测试程序,增加从 1 到 20的 21 个成员,然后将这些数字移除并显示 它们。
package hellojava1;

import javax.management.RuntimeErrorException;

class Queue{
    private int[] element;
    public static final int capacity = 8;
    private int size=0;
    public Queue() {
        element = new int[capacity];
    }
    public void enqueue(int v) {
        if(size>=element.length) {
            int[] temp = new int[element.length*2];
            System.arraycopy(element, 0, temp, 0, element.length);
            element = temp;
        }
        element[size++]=v;
    }
    public int dequeue() {
        if (empty()) {
            throw new RuntimeException("异常");
        } else {
            int temp = element[0];
            for (int i = 0; i < element.length-1; i++) {
                element[i]=element[i+1];
            }
            size--;
            return temp;
        }
    }
    public boolean empty() {
        return size==0;
    }
    public int getSize() {
        return size;
    }
    
}

public class QueueMain {
        public static void main(String[] args) {
            Queue queue =  new Queue();
            for (int i = 1; i <=20; i++) {
                queue.enqueue(i);
            }
            System.out.println("队列实际长度:"+queue.getSize());
            for (int i = 0; i < 20; i++) {
                System.out.println("元素 "+queue.dequeue()+"出队列");
            }
        }
        
}

发表于 2020-05-12 10:58:49 回复(0)