C语言以顺序循环队列为例,设计一个主程序完成如下功能: 1)初始化队列q 2)依次进队列元素a,b,c 3)判断q是否为空 4)出队一个元素,并输出该元素 5)输出q的元素个数 6)依次进队列元素d,e,f 7)输出q的元素个数 8)输出出队序列 9)释放q
时间: 2024-10-19 22:11:00 浏览: 42
在C语言中,我们可以使用结构体和数组来实现顺序循环队列。首先,我们需要定义一个结构体表示队列元素,然后创建一个数组作为队列的存储空间。这里是一个简单的实现步骤:
```c
#include <stdio.h>
#define MAX_SIZE 10
typedef struct {
int data[MAX_SIZE];
int front; // 队头指针
int rear; // 队尾指针
} Queue;
// 初始化队列
void initQueue(Queue *q) {
q->front = q->rear = -1;
}
// 判断队列是否为空
int isQueueEmpty(Queue *q) {
return (q-1);
}
// 入队操作
void enqueue(Queue *q, int item) {
if ((q->rear + 1) % MAX_SIZE == q->front) {
printf("Queue overflow.\n");
return;
}
q->rear = (q->rear + 1) % MAX_SIZE;
q->data[q->rear] = item;
if (q->front == -1) {
q->front = 0;
}
}
// 出队操作
int dequeue(Queue *q) {
if (isQueueEmpty(q)) {
printf("Queue underflow.\n");
return -1;
}
int item = q->data[q->front];
q->front = (q->front + 1) % MAX_SIZE;
if (q->front == q->rear) {
q->front = q->rear = -1;
}
return item;
}
// 输出队列元素个数
void printQueueSize(Queue *q) {
printf("Queue size: %d\n", q->rear - q->front + 1);
}
// 主函数
int main() {
Queue q;
initQueue(&q);
// 进队元素
enqueue(&q, 1);
enqueue(&q, 2);
enqueue(&q, 3);
// 检查队列是否为空并出队
if (!isQueueEmpty(&q)) {
int popped = dequeue(&q);
printf("Popped element: %d\n", popped);
}
// 输出队列大小
printQueueSize(&q);
// 再次入队
enqueue(&q, 4);
enqueue(&q, 5);
enqueue(&q, 6);
// 输出最后的队列大小
printQueueSize(&q);
// 由于没有专门的出队序列函数,我们可以直接打印队列的内容
for (int i = q.front; i != q.rear; i = (i + 1) % MAX_SIZE) {
printf("%d ", q.data[i]);
}
printf("\n");
// 释放队列
return 0;
}
```
阅读全文