Algorithm
[C언어] 연결리스트 큐 Linked Queue
say!
2023. 1. 12. 16:34
728x90
공백 상태 > front와 rear가 NULL값
🟡 연결리스트로 구현한 큐 코드
#include <stdio.h>
#include <stdlib.h>
typedef int element;
typedef struct {
element data;
struct StackNode* link;
}QueueNode;
typedef struct {
QueueNode* front, *rear;
} LinkedQueueType;
void init(LinkedQueueType* s) {
s->front = s->rear = 0;
}
int is_full(LinkedQueueType* s) {
return 0;
}
int is_empty(LinkedQueueType* s) {
return (s->front == NULL);
}
void push(LinkedQueueType* s, element item) {
QueueNode* temp = (QueueNode*)malloc(sizeof(QueueNode));
temp->data = item;
temp->link = NULL;
if (is_empty(s)) {
s->front = temp;
s->rear = temp;
}
else {
s->rear->link = temp;
s->rear = temp;
}
}
element pop(LinkedQueueType* s) {
if (is_empty(s)) {
printf("큐가 비었습니다.\n");
return;
}
else {
QueueNode* temp = s->front;
element data = temp->data;
s->front = temp->link;
if (s->front == NULL) // 공백 상태인 경우
s->rear = NULL;
free(temp);
return data;
}
}
element peek(LinkedQueueType* s) {
if (is_empty(s)) {
printf("큐가 비었습니다.\n");
return;
}
else {
return s->rear->data;
}
}
int main() {
LinkedQueueType s;
init(&s);
push(&s, 1);
push(&s, 3);
push(&s, 6);
printf("%d\n", pop(&s));
printf("%d\n", pop(&s));
return 0;
}