c语言实现日常生活中环队的一个应用实例;比如圆桌会议安排及其他应用等:要求有多组输入输出具有不同规模或者特殊数据测试。
时间: 2023-06-12 20:04:41 浏览: 150
下面是一个使用环形队列实现的圆桌会议安排的例子:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100 // 环形队列的最大容量
typedef struct {
int id;
char name[20];
} Person;
typedef struct {
Person data[MAX_SIZE];
int front; // 队首指针
int rear; // 队尾指针
} CircleQueue;
// 初始化环形队列
void initQueue(CircleQueue *queue) {
queue->front = queue->rear = 0;
}
// 判断环形队列是否为空
int isEmpty(CircleQueue *queue) {
return queue->front == queue->rear;
}
// 判断环形队列是否已满
int isFull(CircleQueue *queue) {
return (queue->rear + 1) % MAX_SIZE == queue->front;
}
// 入队
void enQueue(CircleQueue *queue, Person person) {
if (isFull(queue)) {
printf("队列已满,无法添加!\n");
return;
}
queue->data[queue->rear] = person;
queue->rear = (queue->rear + 1) % MAX_SIZE;
}
// 出队
Person deQueue(CircleQueue *queue) {
if (isEmpty(queue)) {
printf("队列为空,无法出队!\n");
exit(1);
}
Person person = queue->data[queue->front];
queue->front = (queue->front + 1) % MAX_SIZE;
return person;
}
// 打印队列中的人员信息
void printQueue(CircleQueue *queue) {
if (isEmpty(queue)) {
printf("队列为空,无法打印!\n");
return;
}
printf("当前会议人员列表:\n");
int i = queue->front;
while (i != queue->rear) {
printf("编号:%d,姓名:%s\n", queue->data[i].id, queue->data[i].name);
i = (i + 1) % MAX_SIZE;
}
}
int main() {
CircleQueue queue;
initQueue(&queue);
while (1) {
printf("请选择操作:\n");
printf("1. 添加人员\n");
printf("2. 开始会议\n");
printf("3. 退出程序\n");
int choice;
scanf("%d", &choice);
switch (choice) {
case 1: { // 添加人员
printf("请输入人员编号和姓名:\n");
Person person;
scanf("%d %s", &person.id, person.name);
enQueue(&queue, person);
printf("添加成功!\n");
break;
}
case 2: { // 开始会议
if (isEmpty(&queue)) {
printf("当前会议人员列表为空!\n");
break;
}
printf("会议开始,当前主持人为:%s\n", queue.data[queue.front].name);
while (!isEmpty(&queue)) {
Person person = deQueue(&queue);
printf("请%s发言!\n", person.name);
}
printf("会议结束!\n");
break;
}
case 3: { // 退出程序
printf("程序已退出!\n");
return 0;
}
default:
printf("无效的操作!\n");
break;
}
printQueue(&queue);
}
return 0;
}
```
该程序中,通过定义一个 `Person` 结构体来存储每个参会者的编号和姓名。使用环形队列来存储参会者,当主持人主持会议时,依次出队每个参会者并让其发言。程序还提供了添加人员和退出程序的功能,并对用户输入进行了简单的错误处理。
阅读全文