C语言单链表录入学生信息 - 代码示例及解析
#include <stdio.h> #include <stdlib.h>
// 定义学生结构体 typedef struct Student { int id; char name[20]; struct Student* next; } Student;
// 录入学生信息函数 void inputStudentInfo(Student** head) { int id; char name[20];
printf("请输入学生的学号:");
scanf("%d", &id);
printf("请输入学生的姓名:");
scanf("%s", name);
// 创建新的学生节点
Student* newStudent = (Student*)malloc(sizeof(Student));
newStudent->id = id;
strcpy(newStudent->name, name);
newStudent->next = NULL;
if (*head == NULL) {
// 如果链表为空,将新节点设为头节点
*head = newStudent;
} else {
// 找到链表的最后一个节点,并将新节点插入到最后
Student* temp = *head;
while (temp->next != NULL) {
temp = temp->next;
}
temp->next = newStudent;
}
printf("学生信息录入成功!\n");
}
// 打印学生信息函数 void printStudentInfo(Student* head) { if (head == NULL) { printf("链表为空!\n"); return; }
printf("学生信息如下:\n");
printf("学号\t姓名\n");
Student* temp = head;
while (temp != NULL) {
printf("%d\t%s\n", temp->id, temp->name);
temp = temp->next;
}
}
int main() { Student* head = NULL; int choice;
while (1) {
printf("\n1. 录入学生信息\n");
printf("2. 打印学生信息\n");
printf("3. 退出\n");
printf("请选择操作:");
scanf("%d", &choice);
switch (choice) {
case 1:
inputStudentInfo(&head);
break;
case 2:
printStudentInfo(head);
break;
case 3:
printf("程序已退出!\n");
return 0;
default:
printf("无效的操作!\n");
break;
}
}
}
原文地址: https://www.cveoy.top/t/topic/piqC 著作权归作者所有。请勿转载和采集!