오늘 마지막 큐 질문
헛장사
아래의 프로그램을 완성하여 다음의 연결된 큐를 완성하시오
front rear
A link - B link - C link - D link - NULL
#include stdio.h
#include malloc.h
#include stdlib.h
typedef int element;
typedef struct QueueNode {
element item;
struct QueueNode *link;
} QueueNode;
typedef struct {
QueueNode *front, *rear;
} QueueType;
void error(char *message)
{
fprintf(stderr,%s\n,message);
exit(1);
}
void init(QueueType *q)
{
q-front = q-rear = NULL;
}
int is_empty(QueueType *q)
{
return (q-front==NULL);
}
int is_full(QueueType *q)
{
return 0;
}
void enqueue(QueueType *q, element item)
{
QueueNode *temp = (QueueNode *)malloc(sizeof(QueueNode));
if(temp == NULL)
error(메모리를 할당할 수 없습니다.);
else
{
temp-item =item;
temp-link =NULL;
if(is_empty(q)){
q-front = temp;
q-rear = temp;
}
else{
q-rear-link = temp;
q-rear = temp;
}
}
}
element dequeue(QueueType *q)
{
QueueNode *temp = q-front;
element item;
if(is_empty(q))
{
error(큐가 비어 있습니다.);
return 0;
}
else
{
item = temp-item;
q-front = q-front-link;
if(q-front == NULL)
q-rear = NULL;
free(temp);
return item;
}
}
element peek(QueueType *q)
{
if(is_empty(q))
{
error(큐가 비어 있습니다.);
return 0;
}
else
{
element item = q-front-item;
return item;
}
}
int main()
{
QueueType q;
init(&q);
QueueNode *front, *rear;
front = rear = NULL;
enqueue(&q, 1);
enqueue(&q, 2);
enqueue(&q, 3);
enqueue(&q, 4);
printf(A()=%dn, dequeue(&q));
printf(B()=%dn, dequeue(&q));
printf(C()=%dn, dequeue(&q));
printf(D()=%dn, dequeue(&q));
}
제가 정말 미칠듯이 해서 만들었는데
맞게 했는지 좀 봐주세요~!!