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関数も定義しました。これらの関数を呼び出すことで、キューを操作することができます。

コメントを残す 0

Your email address will not be published. Required fields are marked *


广告
広告は10秒後に閉じます。
bannerAds