お知らせ

ただいま、シンタックスハイライターの設定を見直しております。
プログラムが見にくくなっているページがありますが、ご容赦ください。

さまざまなデータ構造(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クラスを使い回すことができなくなります。そんなことは気にしないで、ちゃんと木になるようなプログラムを作っていきます。

今回はこれでおしまい。それではまた。

この記事を書いた人
春日井 優

高校で情報科という教科を担当しています。以前は数学科も担当していました。(今でも数学科の教員免許状は有効です。)プログラムを覚えたのは、「ゲームセンターあらし」という漫画のキャラクターがBASICを解説する「こんにちはマイコン」を読んだことがきっかけでした。

Posted by kasugai