用C语言写一段完整不多于200行的代码,实现数据结构中队列的应用,要求有菜单有循环
时间: 2024-12-14 21:26:21 浏览: 12
当然可以,这里是一个简单的C语言队列实现示例,包括基本操作如入队、出队以及菜单驱动的主程序。这个实现没有使用库函数,而是手动创建了一个队列结构。由于字符限制,我将展示核心部分,你可以根据需要扩展和完善它。
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct Queue {
int *data;
int front, rear, size;
} Queue;
Queue* create_queue(int capacity) {
Queue *queue = malloc(sizeof(Queue));
queue->data = (int*)malloc(capacity * sizeof(int));
queue->front = -1;
queue->rear = -1;
queue->size = 0;
return queue;
}
void enqueue(Queue *queue, int value) {
if (queue->size == queue->capacity) {
printf("Queue is full.\n");
return;
}
queue->data[++queue->rear] = value;
queue->size++;
}
int dequeue(Queue *queue) {
if (queue->size <= 0) {
printf("Queue is empty.\n");
return -1;
}
return queue->data[queue->front++];
}
int main() {
int choice, val;
Queue *queue = create_queue(5);
int menu[] = { 'Q', 'E', 'D', 'Exit' };
while (1) {
printf("\nQueue Menu:\n");
for (int i = 0; i < sizeof(menu)/sizeof(menu[0]); i++) {
printf("%d. %c\n", i+1, menu[i]);
}
printf("Enter your choice: ");
scanf("%d", &choice);
switch (menu[choice - 1]) {
case 'Q':
enqueue(queue, val); // 入队
break;
case 'E':
val = dequeue(queue); // 出队
if (val != -1)
printf("Dequeued value: %d\n", val);
else
printf("Failed to dequeue.\n");
break;
case 'D':
printf("Queue size: %d\n", queue->size);
break;
case 'Exit':
free(queue->data);
free(queue);
return 0;
default:
printf("Invalid choice.\n");
}
}
return 0;
}
```
在这个例子中,用户可以选择入队(Enqueue)、出队(Dequeue)、查看队列大小或退出程序。注意这只是一个基础版本,没有包含错误处理等高级特性。运行时,你可以根据需要增加更多功能或改进用户交互界面。
阅读全文