縦型探索

/****************************/
/* 縦型探索(深さ優先探索) */
/*      coded by Y.Suganuma */
/****************************/
import java.io.*;
import java.util.*;

class Search
{
	void print(Stack <Character> q) {
		System.out.printf("   queue の状態: ");
		if (q.size() <= 0)
			System.out.printf("空です\n");
		else
			System.out.printf("先頭: %c, 要素数: %d\n", q.peek(), q.size());
	}

	void depth()
	{
		Stack <Character> q = new Stack <Character> ();

		q.push(new Character('S'));
		print(q);

		System.out.printf("先頭 S を削除し,A, B, C を追加\n");
		q.pop();
		q.push('A');
		q.push('B');
		q.push('C');
		print(q);

		System.out.printf("先頭 C を削除し,F, G を追加\n");
		q.pop();
		q.push('F');
		q.push('G');
		print(q);

		System.out.printf("先頭 G を削除\n");
		q.pop();
		print(q);

		System.out.printf("先頭 F を削除\n");
		q.pop();
		print(q);

		System.out.printf("先頭 B を削除\n");
		q.pop();
		print(q);

		System.out.printf("先頭 A を削除し,D, E を追加\n");
		q.pop();
		q.push('D');
		q.push('E');
		print(q);

		System.out.printf("先頭 E を削除\n");
		q.pop();
		print(q);

		System.out.printf("先頭 D を削除\n");
		q.pop();
		print(q);
	}
}

public class Test
{
	public static void main (String[] args)
	{
		Search ss = new Search();
		ss.depth();
	}
}