横型探索

/****************************/
/* 横型探索(幅優先探索)   */
/*      coded by Y.Suganuma */
/****************************/
#include <stdio.h>
#include <queue>
using namespace std;

void print(queue<char> &q) {
	printf("   queue の状態: ");
	if (q.empty())
		printf("空です\n");
	else
		printf("先頭及び最後尾: %c %c, 要素数: %d\n", q.front(), q.back(), q.size());
}

int main()
{
	queue<char> q;

	printf("S の追加\n");
	q.push('S');
	print(q);

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

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

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

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

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

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

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

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

	return 0;
}