接口:
package com.heart.datastruc;
/*** 自定义队列* @author du.jian**/
public interface Queue<E> {/*** 向队列尾部加入一个元素(入队)* @return*/boolean add(E e);/*** 删除队列头部元素(出队)* @return*/E poll();/*** 取队列头部元素;不删除* @return*/E peek();/*** 是否为空*/boolean empty();
}
实现:
package com.heart.datastruc;import javax.swing.border.EmptyBorder;public class QueueImpl<E> implements Queue<E> {private Object[] data = null;//池private int maxSize;//容量private int front;//队列头;只允许删除。private int rear;//队列尾;只允许插入。public QueueImpl() {//构造器。默认容量为16this(16);}public QueueImpl(int initSize) {if(initSize >=0) {this.maxSize = initSize;data = new Object[initSize];front = rear = 0;}else {throw new RuntimeException("The size can not less than 0: "+initSize);}}/*** 向队列插入数据*/@Overridepublic boolean add(E e) {if(rear == maxSize ) {throw new RuntimeException("Queue is full and cannot add");}else {data[rear++] = e;return true;}}/*** 出队*/@Overridepublic E poll() {if(empty()){throw new RuntimeException("Queue is empty!");}else {E value = (E) data[front];//临时保存队列front端的元素的值。data[front++] = null;//释放队列front端的元素。return value;}}/*** 查头部元素。*/@Overridepublic E peek() {if(empty()){throw new RuntimeException("Queue is empty!");}else {return (E) data[front];}}@Overridepublic boolean empty() {return data.length ==0;}}
两个栈实现一个队列java?
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态