#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef int Item;
typedef struct queue_type * Queue;
Queue create();
void destroy(Queue queue);
void make_empty(Queue queue);
int is_empty(Queue queue);
Item peek(Queue queue);
int get_size(Queue queue);
Item dequeue(Queue queue);
void enqueue(Queue queue);
struct node {
Item data;
struct node *next;
};
struct queue_type {
struct node * front;
struct node * rear;
int size;
};
int main(void) {
int i;// 명령의수
int j = 0;
int num;
char st[100];
Queue q = create();
scanf("%d", &i);
while (j < i) {
scanf("%s", st);
if (strcmp(st, "push") == 0) {
scanf("%d", &num);
enqueue(q);
}
else if (strcmp(st, "pop") == 0) {
if (is_empty(q)) {
printf("-1\n");
}
else {
printf("%d\n", dequeue(q));
}
}
else if (strcmp(st, "size") == 0) {
printf("%d\n", get_size(q));
}
else if (strcmp(st, "empty") == 0) {
if (is_empty(q)) {
printf("1\n");
}
else {
printf("0\n");
}
}
else if (strcmp(st, "front") == 0) {
printf("%d\n", q->front->data);
}
else if (strcmp(st, "back") == 0) {
printf("%d\n", q->rear->data);
}
j++;
}
}
void terminate(const char * message) {
printf("%s \n", message);
exit(EXIT_FAILURE);
}
int get_size(Queue queue) {
return queue->size;
}
Queue create() {
Queue temp = (Queue)malloc(sizeof(struct queue_type));
if (temp == NULL) {
terminate("malloc is not terminated\n");
}
temp->front = NULL;
temp->rear = NULL;
temp->size = 0;
return temp;
}
void destroy(Queue queue) {
make_empty(queue);
if (is_empty(queue)) {
free(queue);
}
}
void make_empty(Queue q) {
while (!is_empty(q))
dequeue(q);
q->size = 0;
}
int is_empty(Queue q) {
return q->front == NULL;
}
void enqueue(Queue q, Item i) {
struct node* node = (struct node*)malloc(sizeof(struct node));
node->data = i;
node->next = NULL;
if (is_empty(q)) {
q->front = node;
q->rear = node;
}
else {
q->rear = node;
q->front->next = node;
}
q->size++;
}
Item dequeue(Queue q) {
struct node* old_front;
old_front = q->front;
Item i = old_front->data;
q->front = old_front->next;
free(old_front);
if (q->front == NULL) {
q->rear = NULL;
}
q->size--;
return i;
}
Item peek(Queue q) {
if (is_empty(q)) {
terminate("the space is empty\n");
}
return q->front->data;
}
1>소스.obj : error LNK2019: "void __cdecl enqueue(struct queue_type *)" (?enqueue@@YAXPAUqueue_type@@@Z) 외부 기호(참조 위치: _main 함수)에서 확인하지 못했습니다.
1>c:\users\sdy\documents\visual studio 2017\Projects\ConsoleApplication4\Debug\ConsoleApplication4.exe : fatal error LNK1120: 1개의 확인할 수 없는 외부 참조입니다.
왜 이런에러가 나는지 모르겠습니다ㅠㅠ
도와주세요ㅠㅠ