5) 编写程序建立一个有n名学生数据的单向链表,并实现学生数据的输出。
时间: 2023-05-13 22:04:38 浏览: 99
可以使用以下代码实现:
#include <stdio.h>
#include <stdlib.h>
// 定义学生结构体
typedef struct student {
int id; // 学号
char name[20]; // 姓名
int age; // 年龄
struct student *next; // 指向下一个学生的指针
} Student;
// 创建一个新的学生节点
Student *newStudent(int id, char *name, int age) {
Student *s = (Student *)malloc(sizeof(Student));
s->id = id;
strcpy(s->name, name);
s->age = age;
s->next = NULL;
return s;
}
// 添加一个学生节点到链表中
void addStudent(Student **head, Student *s) {
if (*head == NULL) {
*head = s;
} else {
Student *p = *head;
while (p->next != NULL) {
p = p->next;
}
p->next = s;
}
}
// 输出链表中所有学生的信息
void printStudents(Student *head) {
Student *p = head;
while (p != NULL) {
printf("学号:%d,姓名:%s,年龄:%d\n", p->id, p->name, p->age);
p = p->next;
}
}
int main() {
int n;
printf("请输入学生数量:");
scanf("%d", &n);
Student *head = NULL;
for (int i = 1; i <= n; i++) {
int id, age;
char name[20];
printf("请输入第%d个学生的学号、姓名、年龄:", i);
scanf("%d %s %d", &id, name, &age);
Student *s = newStudent(id, name, age);
addStudent(&head, s);
}
printf("所有学生的信息如下:\n");
printStudents(head);
return 0;
}
阅读全文