C言語でキューを定義する方法は何ですか?
C言語では、配列やリンクリストを使用してキューを定義することができます。以下は配列を使用してキューを定義する例です。
#include <stdio.h>
#define MAX_SIZE 100
struct Queue {
int items[MAX_SIZE];
int front;
int rear;
};
struct Queue* createQueue() {
struct Queue* queue = (struct Queue*)malloc(sizeof(struct Queue));
queue->front = -1;
queue->rear = -1;
return queue;
}
int isEmpty(struct Queue* queue) {
if (queue->rear == -1) {
return 1;
}
return 0;
}
int isFull(struct Queue* queue) {
if (queue->rear == MAX_SIZE - 1) {
return 1;
}
return 0;
}
void enqueue(struct Queue* queue, int value) {
if (isFull(queue)) {
printf("Queue is full\n");
} else {
if (isEmpty(queue)) {
queue->front = 0;
}
queue->rear++;
queue->items[queue->rear] = value;
printf("%d enqueued to queue\n", value);
}
}
void dequeue(struct Queue* queue) {
if (isEmpty(queue)) {
printf("Queue is empty\n");
} else {
printf("%d dequeued from queue\n", queue->items[queue->front]);
queue->front++;
if (queue->front > queue->rear) {
queue->front = queue->rear = -1;
}
}
}
int main() {
struct Queue* queue = createQueue();
enqueue(queue, 10);
enqueue(queue, 20);
enqueue(queue, 30);
dequeue(queue);
dequeue(queue);
dequeue(queue);
dequeue(queue);
return 0;
}
上記の例では、構造体を使用してキューを定義し、キューへの追加および削除操作を実装しました。また、キューを作成するためのcreateQueue関数、キューが空かどうかを判断するためのisEmpty関数、キューがいっぱいかどうかを判断するためのisFull関数も定義しました。これらの関数を呼び出すことで、キューを操作することができます。