用链队列编写学生信息c语音
时间: 2023-09-02 16:12:25 浏览: 38
以下是用链队列编写学生信息的C语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_NAME_LEN 20
// 学生信息结构体
typedef struct student {
char name[MAX_NAME_LEN];
int age;
char gender;
struct student *next;
} Student;
// 队列结构体
typedef struct queue {
Student *front;
Student *rear;
int size;
} Queue;
// 初始化队列
void initQueue(Queue *queue) {
queue->front = NULL;
queue->rear = NULL;
queue->size = 0;
}
// 判断队列是否为空
int isEmpty(Queue *queue) {
return queue->size == 0;
}
// 入队
void enqueue(Queue *queue, char *name, int age, char gender) {
Student *newStu = (Student *)malloc(sizeof(Student));
strcpy(newStu->name, name);
newStu->age = age;
newStu->gender = gender;
newStu->next = NULL;
if (isEmpty(queue)) {
queue->front = newStu;
queue->rear = newStu;
} else {
queue->rear->next = newStu;
queue->rear = newStu;
}
queue->size++;
}
// 出队
void dequeue(Queue *queue) {
if (isEmpty(queue)) {
printf("Queue is empty.\n");
return;
}
Student *temp = queue->front;
queue->front = queue->front->next;
free(temp);
queue->size--;
}
// 打印队列中所有学生信息
void printQueue(Queue *queue) {
if (isEmpty(queue)) {
printf("Queue is empty.\n");
return;
}
Student *current = queue->front;
while (current) {
printf("Name: %s, Age: %d, Gender: %c\n", current->name, current->age, current->gender);
current = current->next;
}
}
int main() {
Queue queue;
initQueue(&queue);
// 添加学生信息到队列中
enqueue(&queue, "Tom", 18, 'M');
enqueue(&queue, "Lucy", 17, 'F');
enqueue(&queue, "Jack", 19, 'M');
// 打印队列中所有学生信息
printQueue(&queue);
// 移除队列中一个学生信息
dequeue(&queue);
// 再次打印队列中所有学生信息
printQueue(&queue);
return 0;
}
```
在上述代码中,定义了一个学生信息结构体和一个队列结构体。在初始化队列后,可以通过 `enqueue()` 函数向队列中添加学生信息,通过 `dequeue()` 函数移除队列中的学生信息,通过 `printQueue()` 函数打印队列中所有学生信息。