C语言定义队列的存储结构并完成入队和出队操作
时间: 2024-02-02 18:10:37 浏览: 25
在C语言中,可以使用数组来定义队列的存储结构。具体实现可以参考下面的代码:
```c
#define MAX_SIZE 100 // 队列的最大长度
typedef struct {
int data[MAX_SIZE]; // 存储队列元素的数组
int front; // 队头指针
int rear; // 队尾指针
} Queue;
// 初始化队列
void initQueue(Queue* q) {
q->front = q->rear = 0;
}
// 判断队列是否为空
int isEmpty(Queue* q) {
return q->front == q->rear;
}
// 判断队列是否已满
int isFull(Queue* q) {
return (q->rear + 1) % MAX_SIZE == q->front;
}
// 入队操作
int enqueue(Queue* q, int x) {
if (isFull(q)) {
return 0; // 队列已满,插入失败
}
q->data[q->rear] = x;
q->rear = (q->rear + 1) % MAX_SIZE; // 队尾指针后移
return 1; // 插入成功
}
// 出队操作
int dequeue(Queue* q, int* x) {
if (isEmpty(q)) {
return 0; // 队列为空,删除失败
}
*x = q->data[q->front];
q->front = (q->front + 1) % MAX_SIZE; // 队头指针后移
return 1; // 删除成功
}
```
在上面的代码中,使用了一个结构体来表示队列,包括一个数组以及队头和队尾指针。`initQueue`函数用于初始化队列,`isEmpty`函数用于判断队列是否为空,`isFull`函数用于判断队列是否已满。`enqueue`函数用于入队,`dequeue`函数用于出队。其中,入队操作在队尾插入元素,并将队尾指针后移;出队操作删除队头元素,并将队头指针后移。