2019~2020/자료구조
Queue
유진
2019. 5. 13. 16:14
반응형
#include<stdio.h>
#include<sidlib.h>
#define MAX_SIZE 10
// 큐를 구조체로 선언
typedef int element;
typedef struct{
element queue[MAX_SIZE];
int front, rear;
} QueueType;
// 포화 상태, 공백상태 error 처리
void error(char *message){
fprintf(stderr,"%s\n",message);
exit(1);
}
// 초기화 함수
void init(QueueType *q){
q->front = q->rear = 0;
}
// 삽입함수
void enqueue(QueueType *q, element item){
if((q->rear+1)%MAX_SIZE == q->front)
error("큐가 포화 상태입니다");
q->rear = (q->rear+1) % MAX_SIZE;
q->queue[q->rear] = item;
}
//삭제 함수
element dequeue(QueueType *q){
if(q->front == q->rear)
error("큐가 공백 상태입니다");
q->front = (q->front + 1)%MAX_SIZE;
return q->queue[q->front];
}
int main() {
QueueType q;
init(&q); //item이 queue인데 q안에 queue 안에 배열 item = q.queue[q.front]
printf("\nitem=%d\n",q.queue[q.front]);
printf("front=%d\n",q.front);
printf("rear=%d\n",q.rear);
enqueue(&q,99);
printf("\nitem=%d\n",q.queue[q.front+1]);
printf("front=%d\n",q.front);
printf("rear=%d\n",q.rear);
enqueue(&q,88);
enqueue(&q,77);
enqueue(&q,66);
printf("\nitem=%d\n",q.queue[q.rear]);
printf("front=%d\n",q.front);
printf("rear=%d\n",q.rear);
enqueue(&q,55);
enqueue(&q,44);
enqueue(&q,33);
enqueue(&q,22);
enqueue(&q,11);
printf("\nitem=%d\n",q.queue[q.rear]);
printf("front=%d\n",q.front);
printf("rear=%d\n",q.rear);
dequeue(&q);
printf("\nitem=%d\n",q.queue[q.front]);
printf("front=%d\n",q.front);
printf("rear=%d\n",q.rear);
enqueue(&q,98);
printf("\nitem=%d\n",q.queue[q.rear]);
printf("front=%d\n",q.front);
printf("rear=%d\n",q.rear);
dequeue(&q);
dequeue(&q);
dequeue(&q);
dequeue(&q);
dequeue(&q);
dequeue(&q);
dequeue(&q);
dequeue(&q);
dequeue(&q);
printf("\nitem=%d\n",q.queue[q.front]);
printf("front=%d\n",q.front);
printf("rear=%d\n",q.rear);
}
/*
item=1
front=0
rear=0
item=99
front=0
rear=1
item=66
front=0
rear=4
item=11
front=0
rear=9
item=99
front=1
rear=9
item=98
front=1
rear=0
item=98
front=0
rear=0
--------------------------------
Process exited after 0.02195 seconds with return value 7
계속하려면 아무 키나 누르십시오 . . .
*/
반응형