Array Queue 구현

  • 문자들의 Queue 를 테스트하는 프로그램 구현
  • 명령어
    +: AddQ -: DeleteQ S: Show Q: Quit

실행 예

image

자료구조 및 함수 구성

  • Void addq(Element e)
    Requires : Queue 가 포화되지 않아야 함
    Results : Queue 에 e 를 삽입

  • Element deleteq()
    Requires : Queue 가 비어 있지 않아야 함
    Results : Queue 에서 원소를 반환

  • Void queue_show()
    Results : Queue 의 내용을 보여줌

Source

  • 실습1.h
#pragma once
#define MAX_SIZE 10
#define boolean unsigned char
#define true 1
#define false 0

typedef char Element;

Element queue[MAX_SIZE];
int front = 0;
int rear = 0;

void addq(Element e);
Element deleteq();
void queue_show();
  • 실습1.cpp
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<ctype.h>
#include"실습1.h"

void addq(Element e) {
	if (rear >= MAX_SIZE) {
		printf("\nQueue is Full!!!\n");
		return;
	}
	queue[rear++] = e;
}
Element deleteq() {
	if (front < 0) {
		printf("Queue is empty!!!\n");
		exit(1);
	}

	Element tmp;

	tmp = queue[front];
	queue[front++] = NULL;
	return tmp;
}
void queue_show() {
	for (int i = 0; i < MAX_SIZE; i++)
		printf("%c ",queue[i]);
}

void main() {
	char c, e;

	while (1) {
		printf("\nCommand> ");
		c = _getch();
		_putch(c);
		c = toupper(c);

		switch (c) {
		case'+':
			e = _getch();
			_putch(e);
			addq(e);
			break;
		case'-':
			e = deleteq();
			printf("\n %c", e);
			break;
		case 'S':
			queue_show();
			break;
		case'Q':
			printf("\n");
			exit(1);
		default:
			break;
		}
	}
}