博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据结构之队列
阅读量:6423 次
发布时间:2019-06-23

本文共 2130 字,大约阅读时间需要 7 分钟。

队列顺序存储结构实现

public class Queue
{ private Object[] data = null; private int maxSize; //队列容量 private int front; // 队列头,允许删除 private int rear; //队列尾,允许插入 public Queue() { //默认的空构造函数队列容量为10 this(10); } /** * 构造函数 * @param initialSize 队列初始化大小 */ public Queue(int initialSize) { if (initialSize >= 0) { this.maxSize = initialSize; data = new Object[initialSize]; }else { throw new RuntimeException("初始化大小不能小于0:"+initialSize); } } /* 判断是否为空 */ public boolean empty(){ return rear==front?true:false; } /* 插入 */ public boolean add(E e){ if (rear == maxSize) { //如果尾等于容量上限 //方案一,超过抛异常 /*throw new RuntimeException("队列已满,无法插入新的元素");*/ //方案二,直接将数组容量翻倍 Object[] temp = Arrays.copyOf(data, maxSize*2); maxSize = maxSize*2; data = temp; data[rear++] = e; return true; }else { data[rear++] = e; return true; } } /** * 返回队首元素,但不删除 */ public E peek(){ if (empty()) { throw new RuntimeException("空队列异常!"); }else { return (E) data[front]; } } /** * 出队,返回队首并删除 */ public E poll(){ if (empty()) { throw new RuntimeException("空队列异常!"); }else { E value = (E) data[front]; data[front++] = null; //完善,上面出队列后没有把其他的往前移动一位 int i = 0; //待赋值的当前位置 while (i

测试

public static void main(String[] args) {        Queue
queue = new Queue(5); queue.add("Str111"); queue.add("Str222"); queue.add("Str333"); queue.add("Str444"); queue.add("Str555"); queue.add("Str666"); queue.add("Str777"); System.out.println("出队列(首):"+queue.poll()); System.out.println("队列首位索引:"+queue.front); System.out.println("队列末位索引:"+queue.rear); System.out.println(queue.toString()); }

结果

参考:

转载于:https://www.cnblogs.com/aeolian/p/10475506.html

你可能感兴趣的文章
logstash + grok 正则语法
查看>>
Zimbra开源版(v8.6)安装说明
查看>>
Android性能优化之TraceView和Lint使用详解
查看>>
LBS核心技术解析
查看>>
Fible Channel over Convergence Enhanced Ethernet talk about
查看>>
讨论:今日头条适配方案使用中出现的问题
查看>>
CSS3 3D翻转动画
查看>>
要命啦!Word中快速录入大全,内含快捷键小技巧,快来一起学习!
查看>>
javascript实现音频mp3播放
查看>>
html5-离线缓存
查看>>
linux系统安装完后的常见工作
查看>>
在Linux服务器、客户端中构建密钥对验证进行远程连接
查看>>
和“C”的再遇
查看>>
一键安装kubernetes 1.13.0 集群
查看>>
RabbitMq的集群搭建
查看>>
spring boot + mybatis 同时访问多数据源
查看>>
URL中汉字转码
查看>>
[转]go正则实例
查看>>
Selector中关于顺序的注意事项
查看>>
小黑小波比.清空<div>标签内容
查看>>