队列的基本操作以及C语言实现

队列的基本操作:
1.Enqueue:将元素插入队列尾部。
2.Dequeue:从队列头部移除元素。
3.Front:获取队列头部元素。
4.IsEmpty:检查队列是否为空。
5.IsFull:检查队列是否已满。
代码实现:

#include 

#define MAX_SIZE 100

// 定义队列结构
typedef struct {
    int data[MAX_SIZE];
    int front;
    int rear;
} Queue;

// 初始化队列
void initQueue(Queue *queue) {
    queue->front = -1;
    queue->rear = -1;
}

// 入队操作
void enqueue(Queue *queue, int value) {
    if ((queue->rear + 1) % MAX_SIZE == queue->front) {
        printf("满了.\n");
        return;
    }
    if (queue->front == -1) {
        queue->front = 0;
    }
    queue->rear = (queue->rear + 1) % MAX_SIZE;
    queue->data[queue->rear] = value;
}

// 出队操作
int dequeue(Queue *queue) {
    if (queue->front == -1) {
        printf("空了\n");
        return -1; // 返回一个特定的错误值
    }
    int value = queue->data[queue->front];
    if (queue->front == queue->rear) {
        queue->front = -1;
        queue->rear = -1;
    } else {
        queue->front = (queue->front + 1) % MAX_SIZE;
    }
    return value;
}

// 获取队列头部元素
int front(Queue *queue) {
    if (queue->front == -1) {
        printf("空了.\n");
        return -1; // 返回一个特定的错误值
    }
    return queue->data[queue->front];
}

// 检查队列是否为空
int isEmpty(Queue *queue) {
    return queue->front == -1;
}

// 检查队列是否已满
int isFull(Queue *queue) {
    return (queue->rear + 1) % MAX_SIZE == queue->front;
}

int main() {
    Queue queue;
    initQueue(&queue);

    enqueue(&queue, 10);
    enqueue(&queue, 20);
    enqueue(&queue, 30);

    printf("Front element: %d\n", front(&queue));

    while (!isEmpty(&queue)) {
        printf("Dequeued element: %d\n", dequeue(&queue));
    }

    return 0;
}

你可能感兴趣的:(数据结构与算法,c语言)