创建队列接口
创建字符队列接口。
待开发的三个实现:
固定大小的线性队列。
循环队列(复用数组空间)。
动态队列(根据需要增长)。
1 创建一个名为 ICharQ.java
的文件
// 字符队列接口。
公共接口 ICharQ {
// 向队列中插入一个字符。
void put(char ch);
// 从队列中删除一个字符。
char get();
}
2 创建一个名为 IQDemo.java 的文件。
3 通过添加此处显示的 FixQueue 类开始创建 IQDemo.java:
4 将如下所示的 CircularQueue 类添加到 IQDemo.java。
循环队列操作:重用数组中删除元素时释放的空间,只要有删除,它就可以存储无限数量的元素。
边界条件:当到达数组末尾时,但当未删除的项目被新项目覆盖时,队列未满。
put() 方法必须检查几个条件来确定队列是否已满。满队列的条件: 如果满足以下条件,则队列已满: putloc 的单位小于 getloc。 putloc 位于数组末尾,getloc 位于数组开头。
空队列条件:当 getloc 和 putloc 相等时,队列为空。
数组大小:底层数组会比队列大小大一个单位,以方便检查。
5 在 IQDemo.java 中插入如下所示的 DynQueue 类。它实现了一个“可扩展”队列,当空间耗尽时可以扩展其大小。
- 在此队列实现中,当队列已满时,尝试存储另一个元素会使新的底层数组两倍大 原始数组将被分配,队列的当前内容将被复制到此数组中,并且对新数组的引用将存储在 q.
6 要演示 ICharQ 的三种实现,请将以下类插入到 IQDemo.java 中。它使用 ICharQ 引用来访问所有队列。
类 IQDemo {
public static void main(String args[]) {
固定队列 q1 = new 固定队列(10);
DynQueue q2 = new DynQueue(5);
CircularQueue q3 = new CircularQueue(10);
ICharQ iQ;
char ch;
int i;
iQ = q1;
// 将一些字符插入到固定队列中。
for(i=0; i
iQ.put((char) ('A' i));
// 显示队列。
System.out.print("固定队列的内容:");
for(i=0; i
ch = iQ.get();
System.out.print(ch);
}
System.out.println();
iQ = q2;
// 向动态队列中插入一些字符。
for(i=0; i
iQ.put((char) ('Z' - i));
// 显示队列。
System.out.print("动态队列的内容:");
for(i=0; i
ch = iQ.get();
System.out.print(ch);
}
System.out.println();
iQ = q3;
// 向循环队列中插入一些字符。
for(i=0; i
iQ.put((char) ('A' i));
// 显示队列。
System.out.print("循环队列的内容:");
for(i=0; i
ch = iQ.get();
System.out.print(ch);
}
System.out.println();
// 将更多字符插入循环队列。
for(i=10; i
iQ.put((char) ('A' i));
// 显示队列。
System.out.print("循环队列的内容:");
for(i=0; i
ch = iQ.get();
System.out.print(ch);
}
System.out.println("n存储并消费自"
“循环队列。”);
// 存储并使用循环队列中的项目。
for(i=0; i
iQ.put((char) ('A' i));
ch = iQ.get();
System.out.print(ch);
}
}
}
7 创建 DynQueue 的循环版本。向 ICharQ 添加一个重置队列的方法。创建一个静态方法,将一种队列类型的内容复制到另一种队列类型。
以上是创建队列接口的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

公司安全软件导致部分应用无法正常运行的排查与解决方法许多公司为了保障内部网络安全,会部署安全软件。...

将姓名转换为数字以实现排序的解决方案在许多应用场景中,用户可能需要在群组中进行排序,尤其是在一个用...

系统对接中的字段映射处理在进行系统对接时,常常会遇到一个棘手的问题:如何将A系统的接口字段有效地映�...

在使用IntelliJIDEAUltimate版本启动Spring...

在使用MyBatis-Plus或其他ORM框架进行数据库操作时,经常需要根据实体类的属性名构造查询条件。如果每次都手动...

Java对象与数组的转换:深入探讨强制类型转换的风险与正确方法很多Java初学者会遇到将一个对象转换成数组的�...

Redis缓存方案如何实现产品排行榜列表的需求?在开发过程中,我们常常需要处理排行榜的需求,例如展示一个�...

电商平台SKU和SPU表设计详解本文将探讨电商平台中SKU和SPU的数据库设计问题,特别是如何处理用户自定义销售属...
