首页  >  文章  >  Java  >  创建队列接口

创建队列接口

Patricia Arquette
Patricia Arquette原创
2024-10-02 06:23:30295浏览
  • 创建字符队列接口。

  • 待开发的三个实现:

  • 固定大小的线性队列。

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

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

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