さまざまなデータ構造(7)キュー2
こんにちは。前回はキューについて説明しました。今回は、キュークラスとしてまとめます。
キューのプログラム(Java)
package data_structure;
public class MyQueue<E> {
private MyLinkedList<E> myList;
public MyQueue() {
myList = new MyLinkedList<E>();
}
public void offer(E element) {
myList.add(0, element);
}
public E peek() {
return myList.get(myList.size() - 1);
}
public E poll() {
E result = peek();
myList.remove(myList.size() - 1);
return result;
}
public boolean isEmpty() {
return myList.size() == 0;
}
public String toString() {
return myList.toString();
}
}
基本的にMyLinkedListクラスのメソッドを呼び出して済ませています。
動作確認をするプログラム
上のプログラムで作ったMyQueueクラスが正しく動作するかを確かめるプログラムです。ひととおり確かめています。前回の説明では苗字を使っていましたが、旧暦の月名にしました。
package data_structure;
public class MyQueueExec {
public static void main(String[] args) {
MyQueue<String> queue = new MyQueue<String>();
System.out.println(queue.isEmpty());
queue.offer("睦月");
System.out.println(queue);
System.out.println(queue.isEmpty());
queue.offer("如月");
System.out.println(queue);
queue.offer("弥生");
System.out.println(queue);
queue.offer("卯月");
System.out.println(queue);
String s = queue.peek();
System.out.println(s);
System.out.println(queue);
s = queue.poll();
System.out.println(s);
System.out.println(queue);
System.out.println(queue.peek());
}
}
実行結果は次になります。
true
[睦月]
false
[如月]→[睦月]
[弥生]→[如月]→[睦月]
[卯月]→[弥生]→[如月]→[睦月]
睦月
[卯月]→[弥生]→[如月]→[睦月]
睦月
[卯月]→[弥生]→[如月]
如月
スタックとキューを作ったので、次回は、木を作っていきます。さすがに連結先が1つでは木にならないので、MyLinkedListクラスを使い回すことができなくなります。そんなことは気にしないで、ちゃんと木になるようなプログラムを作っていきます。
今回はこれでおしまい。それではまた。
ディスカッション
コメント一覧
まだ、コメントがありません