C语言创建队列将0-9数字插入其中,将数字出队并销毁队列,完整代码
时间: 2024-12-19 08:25:33 浏览: 4
在C语言中,我们可以使用数组来实现队列的数据结构。这里是一个基本的例子,展示如何创建、操作以及销毁队列。这个例子中,我们假设队列的最大容量是10,使用数组存储数据,并实现了入队(enqueue)、出队(dequeue)以及销毁队列的功能。
```c
#include <stdio.h>
#define MAX_SIZE 10
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 num) {
if (queue->rear == (MAX_SIZE - 1)) {
printf("Queue is full.\n");
return;
}
if (queue->front == -1) {
queue->front = 0;
}
queue->data[queue->rear] = num;
queue->rear = (queue->rear + 1) % MAX_SIZE;
}
// 出队函数(从队头移除元素)
int dequeue(Queue* queue) {
if (queue->front == -1 || queue->front == queue->rear) {
printf("Queue is empty.\n");
return -1; // 或者抛出错误
}
int num = queue->data[queue->front];
queue->front = (queue->front + 1) % MAX_SIZE;
return num;
}
// 销毁队列(释放内存)
void destroyQueue(Queue* queue) {
queue->front = -1;
queue->rear = -1;
}
int main() {
Queue myQueue;
initQueue(&myQueue);
// 插入数字
for (int i = 0; i <= 9; i++) {
enqueue(&myQueue, i);
printf("Enqueued %d, Front: %d, Rear: %d\n", i, myQueue.front, myQueue.rear);
}
// 出队并打印结果
while (myQueue.front != -1) {
int num = dequeue(&myQueue);
printf("Dequeued %d, Front: %d, Rear: %d\n", num, myQueue.front, myQueue.rear);
}
// 销毁队列
destroyQueue(&myQueue);
return 0;
}
```
请注意,这是一个简化的示例,实际应用可能会需要考虑更复杂的情况,例如动态扩容等。在这个示例中,队列满了会报错,而在实际情况中,你可以选择循环处理或者采用其他策略。
阅读全文