用C++实现一个包含学生信息的顺序队列可以定义为一个能够存储学生信息的数组,该数组可以按顺序存储一定数量的学生记录。每个学生记录可以包含学生姓名、学号、性别、年龄、身高、体重等信息。队列在插入和删除记录时遵循先进先出的规则,即先插入的记录在队列中的位置越靠前,先删除的记录也应该是队列中的第一个。在实现队列的操作时,需要定义两个指针指向队列头和队列尾的位置,以方便插入和删除操作的实现。
时间: 2023-05-24 09:05:40 浏览: 60
以下是一个简单的实现,包含了队列的初始化、插入、删除和遍历操作:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_SIZE 100
typedef struct student {
char name[20];
char id[10];
char sex;
int age;
float height;
float weight;
} student;
typedef struct queue {
student data[MAX_SIZE];
int front;
int rear;
} queue;
void init(queue *q) {
q->front = q->rear = 0;
}
int is_empty(queue *q) {
return q->front == q->rear;
}
int is_full(queue *q) {
return q->rear == MAX_SIZE;
}
void enqueue(queue *q, student s) {
if (is_full(q)) {
printf("Queue is full.\n");
return;
}
q->data[q->rear++] = s;
}
student dequeue(queue *q) {
if (is_empty(q)) {
printf("Queue is empty.\n");
exit(1);
}
student s = q->data[q->front++];
return s;
}
void print_student(student s) {
printf("name: %s\n", s.name);
printf("id: %s\n", s.id);
printf("sex: %c\n", s.sex);
printf("age: %d\n", s.age);
printf("height: %.2f\n", s.height);
printf("weight: %.2f\n", s.weight);
}
void traverse(queue *q) {
printf("The queue contains %d student records:\n", q->rear - q->front);
for (int i = q->front; i < q->rear; i++) {
printf("Record %d:\n", i - q->front + 1);
print_student(q->data[i]);
}
}
int main() {
queue q;
init(&q);
// insert some student records
student s1 = {"Alice", "1001", 'F', 18, 165.0, 55.0};
student s2 = {"Bob", "1002", 'M', 19, 175.0, 70.0};
student s3 = {"Charlie", "1003", 'M', 20, 180.0, 80.0};
enqueue(&q, s1);
enqueue(&q, s2);
enqueue(&q, s3);
// traverse the queue
traverse(&q);
// delete a record
student s = dequeue(&q);
printf("The following record has been deleted:\n");
print_student(s);
// traverse again
traverse(&q);
return 0;
}
```
运行结果如下:
```
The queue contains 3 student records:
Record 1:
name: Alice
id: 1001
sex: F
age: 18
height: 165.00
weight: 55.00
Record 2:
name: Bob
id: 1002
sex: M
age: 19
height: 175.00
weight: 70.00
Record 3:
name: Charlie
id: 1003
sex: M
age: 20
height: 180.00
weight: 80.00
The following record has been deleted:
name: Alice
id: 1001
sex: F
age: 18
height: 165.00
weight: 55.00
The queue contains 2 student records:
Record 1:
name: Bob
id: 1002
sex: M
age: 19
height: 175.00
weight: 70.00
Record 2:
name: Charlie
id: 1003
sex: M
age: 20
height: 180.00
weight: 80.00
```
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)