728x90
๐ต ์ํ ํ๋ ํญ์ ํ๋์ ์๋ฆฌ๋ฅผ ๋น์๋
> ํฌํ ์ํ - front๊ฐ rear๋ณด๋ค ํ๋ ์์ ์๋ ๊ฒฝ์ฐ
front == (rear + 1) % Mํํฌ๊ธฐ
> ๊ณต๋ฐฑ ์ํ - front == rear ์ธ ๊ฒฝ์ฐ
๐ก ์ํ ํ ์ฝ๋
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 10
typedef int element;
typedef struct {
int front, rear;
element data[MAX_SIZE];
} QueueType;
void init(QueueType* q) {
q->front = -1;
q->rear = -1;
}
int is_full(QueueType* q) {
return q->front == (q->rear + 1) % MAX_SIZE; // ์ํ ํ์ ๊ฒฝ์ฐ
}
int is_empty(QueueType* q) {
return q->front == q->rear;
}
void enqueue(QueueType* q, int item) {
if (is_full(q)) {
printf("์๋ฌ");
return;
}
else {
q->rear = (q->rear + 1) % MAX_SIZE;
q->data[(q->rear)] = item;
}
}
int dequeue(QueueType* q) {
if (is_empty(q)) {
printf("์๋ฌ");
return;
}
else {
q->front = (q->front + 1) % MAX_SIZE;
return q->data[(q->front)];
}
}
int main() {
int i;
QueueType q;
init(&q);
enqueue(&q, 1);
enqueue(&q, 2);
enqueue(&q, 3);
i = dequeue(&q);
printf("%d\n", i);
return 0;
}
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C์ธ์ด] ์ฐ๊ฒฐ๋ฆฌ์คํธ ์คํ Linked Stack (0) | 2023.01.12 |
---|---|
[C์ธ์ด] - ์ํ ๋ฑ double-ended queue (0) | 2023.01.12 |
[C์ธ์ด] - ํ Queue (0) | 2023.01.11 |
[C์ธ์ด] Stack ์คํ - ํ์ํ๊ธฐ์ ๊ณ์ฐ postfix / ๋ฌธ์์ด ์ซ์ ์ ์ํ์ผ๋ก ๋ฐ๊พธ๊ธฐ (0) | 2023.01.11 |
[C์ธ์ด] Stack ์คํ - ์ค์ํ๊ธฐ์ infix์์ ํ์ํ๊ธฐ์ postfix์ผ๋ก ๋ณํ (0) | 2022.12.23 |