以下是一个简单的学生信息示意性检索程序的实现,使用C语言编写,并包含了链表的基本操作。请注意,这是一个非常基础的示例,实际生产环境中你可能需要添加错误处理、内存管理优化、数据验证等更复杂的功能。 首先,定义学生信息的结构体以及链表节点的结构体: ```c #include #include #include #define MAX_SEX_LENGTH 10 #define MAX_CLASS_LENGTH 30 typedef struct Student { int id; char sex[MAX_SEX_LENGTH]; int age; char class_name[MAX_CLASS_LENGTH]; } Student; typedef struct StudentNode { Student data; struct StudentNode *next; } StudentNode; typedef struct { StudentNode *head; int size; } StudentList; ``` 接下来,我们来实现六个功能模块: 1. 学生信息的初始化(链表的创建) 2. 学生的插入 3. 学生的删除(按学号删除) 4. 学生信息的修改(按学号查找到该学生并修改) 5. 学生信息的查找(按学号查找) 6. 显示当前所有学生信息 ```c // 1. 初始化链表 void initList(StudentList *list) { list->head = NULL; list->size = 0; } // 2. 插入学生 void insertStudent(StudentList *list, Student *student) { StudentNode *newNode = (StudentNode *)malloc(sizeof(StudentNode)); if (!newNode) { perror("Memory allocation failed"); exit(EXIT_FAILURE); } newNode->data = *student; newNode->next = list->head; list->head = newNode; list->size++; } // 3. 按学号删除学生 void deleteStudentById(StudentList *list, int id) { StudentNode *prev = NULL; StudentNode *current = list->head; while (current != NULL && current->data.id != id) { prev = current; current = current->next; } if (current == NULL) { printf("Student with ID %d not found.\n", id); } else { if (prev == NULL) { list->head = current->next; } else { prev->next = current->next; } free(current); list->size--; } } // 4. 修改学生信息 void updateStudentById(StudentList *list, int id, Student *newInfo) { StudentNode *current = list->head; while (current != NULL && current->data.id != id) { current = current->next; } if (current != NULL) { current->data = *newInfo; printf("Student with ID %d updated.\n", id); } else { printf("Student with ID %d not found.\n", id); } } // 5. 查找学生信息 Student *findStudentById(StudentList *list, int id) { StudentNode *current = list->head; while (current != NULL && current->data.id != id) { current = current->next; } if (current != NULL) { return ¤t->data; } else { return NULL; } } // 6. 显示所有学生信息 void displayAllStudents(const StudentList *list) { StudentNode *current = list->head; printf("ID\tSex\tAge\tClass\n"); while (current != NULL) { printf("%d\t%s\t%d\t%s\n", current->data.id, current->data.sex, current->data.age, current->data.class_name); current = current->next; } } int main() { int numStudents, studentId; StudentList studentList; initList(&studentList); printf("Enter the number of students: "); scanf("%d", &numStudents); for (int i = 0; i < numStudents; i++) { Student newStudent; printf("Enter details

点赞(0)
×
关注公众号,登录后继续创作
或点击进入高级版AI
扫码关注后未收到验证码,回复【登录】二字获取验证码
发表
评论
返回
顶部