两个栈实现一个队列java,队列的自定义实现

 2023-09-28 阅读 14 评论 0

摘要:接口: package com.heart.datastruc; /*** 自定义队列* @author du.jian**/ public interface Queue<E> {/*** 向队列尾部加入一个元素(入队)* @return*/boolean add(E e);/*** 删除队列头部元素(出队)* @return*/E pol

接口:

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? 

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/2/101495.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息