搜索
首页Javajava教程创建队列接口

创建队列接口

Oct 02, 2024 am 06:23 AM

  • 创建字符队列接口。

  • 待开发的三个实现:

  • 固定大小的线性队列。

  • 循环队列(复用数组空间)。

  • 动态队列(根据需要增长)。

1 创建一个名为 ICharQ.java
的文件 // 字符队列接口。
公共接口 ICharQ {
// 向队列中插入一个字符。
void put(char ch);
// 从队列中删除一个字符。
char get();
}

2 创建一个名为 IQDemo.java 的文件。

3 通过添加此处显示的 FixQueue 类开始创建 IQDemo.java:

Crie uma interface Queue

4 将如下所示的 CircularQueue 类添加到 IQDemo.java。

Crie uma interface Queue

  • 循环队列操作:重用数组中删除元素时释放的空间,只要有删除,它就可以存储无限数量的元素。

  • 边界条件:当到达数组末尾时,但当未删除的项目被新项目覆盖时,队列未满。
    put() 方法必须检查几个条件来确定队列是否已满。

  • 满队列的条件: 如果满足以下条件,则队列已满: putloc 的单位小于 getloc。 putloc 位于数组末尾,getloc 位于数组开头。

  • 空队列条件:当 getloc 和 putloc 相等时,队列为空。

  • 数组大小:底层数组会比队列大小大一个单位,以方便检查。

5 在 IQDemo.java 中插入如下所示的 DynQueue 类。它实现了一个“可扩展”队列,当空间耗尽时可以扩展其大小。

Crie uma interface Queue

  • 在此队列实现中,当队列已满时,尝试存储另一个元素会使新的底层数组两倍大 原始数组将被分配,队列的当前内容将被复制到此数组中,并且对新数组的引用将存储在 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中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
Java仍然是基于新功能的好语言吗?Java仍然是基于新功能的好语言吗?May 12, 2025 am 12:12 AM

Javaremainsagoodlanguageduetoitscontinuousevolutionandrobustecosystem.1)Lambdaexpressionsenhancecodereadabilityandenablefunctionalprogramming.2)Streamsallowforefficientdataprocessing,particularlywithlargedatasets.3)ThemodularsystemintroducedinJava9im

是什么使Java很棒?关键特征和好处是什么使Java很棒?关键特征和好处May 12, 2025 am 12:11 AM

Javaisgreatduetoitsplatformindependence,robustOOPsupport,extensivelibraries,andstrongcommunity.1)PlatformindependenceviaJVMallowscodetorunonvariousplatforms.2)OOPfeatureslikeencapsulation,inheritance,andpolymorphismenablemodularandscalablecode.3)Rich

前5个Java功能:示例和解释前5个Java功能:示例和解释May 12, 2025 am 12:09 AM

Java的五大特色是多态性、Lambda表达式、StreamsAPI、泛型和异常处理。1.多态性让不同类的对象可以作为共同基类的对象使用。2.Lambda表达式使代码更简洁,特别适合处理集合和流。3.StreamsAPI高效处理大数据集,支持声明式操作。4.泛型提供类型安全和重用性,编译时捕获类型错误。5.异常处理帮助优雅处理错误,编写可靠软件。

Java的最高功能如何影响性能和可伸缩性?Java的最高功能如何影响性能和可伸缩性?May 12, 2025 am 12:08 AM

java'stopfeatureSnificallyEnhanceItsperFormanCeanDscalability.1)对象 - 方向 - incipleslike-polymormormormormormormormormormormormormorableablefleandibleandscalablecode.2)garbageCollectionAutoctionAutoctionAutoctionAutoctionAutoctionautomorymanatesmemorymanateMmanateMmanateMmanagementButCancausElatenceiss.3)

JVM内部:深入Java虚拟机JVM内部:深入Java虚拟机May 12, 2025 am 12:07 AM

JVM的核心组件包括ClassLoader、RuntimeDataArea和ExecutionEngine。1)ClassLoader负责加载、链接和初始化类和接口。2)RuntimeDataArea包含MethodArea、Heap、Stack、PCRegister和NativeMethodStacks。3)ExecutionEngine由Interpreter、JITCompiler和GarbageCollector组成,负责bytecode的执行和优化。

什么是使Java安全安全的功能?什么是使Java安全安全的功能?May 11, 2025 am 12:07 AM

Java'ssafetyandsecurityarebolsteredby:1)strongtyping,whichpreventstype-relatederrors;2)automaticmemorymanagementviagarbagecollection,reducingmemory-relatedvulnerabilities;3)sandboxing,isolatingcodefromthesystem;and4)robustexceptionhandling,ensuringgr

必不可少的Java功能:增强您的编码技巧必不可少的Java功能:增强您的编码技巧May 11, 2025 am 12:07 AM

javaoffersseveralkeyfeaturesthatenhancecodingskills:1)对象 - 方向 - 方向上的贝利奥洛夫夫人 - 启动worldentities

JVM最完整的指南JVM最完整的指南May 11, 2025 am 12:06 AM

thejvmisacrucialcomponentthatrunsjavacodebytranslatingitolachine特定建筑,影响性能,安全性和便携性。1)theclassloaderloader,links andinitializesClasses.2)executionEccutionEngineExecutionEngineExecutionEngineExecuteByteCuteByteCuteByteCuteBytecuteBytecuteByteCuteByteCuteByteCuteBytecuteByteCodeNinstRonctientions.3)Memo.3)Memo

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

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

热门文章

热工具

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器

mPDF

mPDF

mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。