c언어를 활용한 선형 큐

임승혁·2021년 2월 8일
0
#include <stdio.h>
#include <stdlib.h>
#define MAX_QUEUE_SIZE 10

typedef int element;
typedef struct {
	int front;
	int rear;
	element data[MAX_QUEUE_SIZE];
}QueueType;

void error(char* message) {
	fprintf(stderr, "%s\n", message);
	exit(1);
}

void init_queue(QueueType* q) {
	q->rear = -1;
	q->front = -1;
}

void queue_print(QueueType* q) {
	for (int i = 0;i < MAX_QUEUE_SIZE;i++) {
		if (i <= q->front || i > q->rear)
			printf(" | ");
		else
			printf("%d | ", q->data[i]);
	}
	printf("\n");
}

int is_full(QueueType* q) {
	if (q->rear == MAX_QUEUE_SIZE - 1)
		return 1;
	else
		return 0;
}

int is_empty(QueueType* q) {
	if (q->front == q->rear)
		return 1;
	else
		return 0;
}

void enqueue(QueueType* q, int item) {
	if (is_full(q)) {
		error("큐가 포화상태입니다.");
		return;
	}
	q->data[++(q->rear)] = item;
}

int dequeue(QueueType* q) {
	if (is_empty(q)) {
		error("큐가 공백상태입니다.");
		return -1;
	}
	int item = q->data[++(q->front)];
	return item;
}

int main(void) {
	int item = 0;
	QueueType q;
	init_queue(&q);
	for (int i = 1;i <= 10;i++) {
		queue_print(&q);
		enqueue(&q, i * 10);	
	}

	for (int i = 1;i <= 10;i++) {
		item = dequeue(&q);
		queue_print(&q);

	}
}


설명 : 첫 번째 for문에서 생성한 q에 1부터 10까지 넣고 두 번째 for문에서 선입선출에 따라 1부터 10까지 차례로 데이터를 삭제한다.

profile
한성공대생

0개의 댓글