创建字符队列接口。
待开发的三个实现:
固定大小的线性队列。
循环队列(复用数组空间)。
动态队列(根据需要增长)。
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 类。它实现了一个“可扩展”队列,当空间耗尽时可以扩展其大小。
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中文网其他相关文章!