为以下代码增加修改部门成员的功能:#include <stdio.h> #include <stdlib.h> #include <string.h> // 定义一个学生结构体 typedef struct student { char name[20]; // 姓名 int id; // 学号 char dept[20]; // 部门 struct student *next; // 下一个学生 struct student *child; // 第一个子节点 } Student; // 定义一个全局变量,存储学生会组织架构 Student *root = NULL; // 添加一个新的学生到指定的部门中 void addStudent(char *dept, char *name, int id) { // 创建一个新的学生节点 Student *newStudent = (Student*)malloc(sizeof(Student)); strcpy(newStudent->name, name); newStudent->id = id; strcpy(newStudent->dept, dept); newStudent->next = NULL; newStudent->child = NULL; // 如果学生会组织架构为空,则新节点为根节点 if (root == NULL) { root = newStudent; return; } // 查找指定部门的最后一个学生节点 Student *cur = root; while (cur != NULL) { if (strcmp(cur->dept, dept) == 0) { while (cur->next != NULL) { cur = cur->next; } cur->next = newStudent; return; } cur = cur->child; } // 如果指定部门不存在,则创建新的部门节点 Student *newDept = (Student*)malloc(sizeof(Student)); strcpy(newDept->name, dept); newDept->id = -1; newDept->next = NULL; newDept->child = newStudent; // 将新部门节点插入到学生会组织架构中 cur = root; while (cur->child != NULL) { cur = cur->child; } cur->child = newDept; } // 根据学号查找学生信息 Student *findStudent(int id) { Student *cur = root; while (cur != NULL) { Student *s = cur->child; while (s != NULL) { if (s->id == id) { return s; } s = s->next; } cur = cur->child; } return NULL; } // 输出指定部门的所有学生信息 void printDept(char *dept) { Student *cur = root; while (cur != NULL) { if (strcmp(cur->dept, dept) == 0) { printf("%s部门成员:\n", dept); Student *s = cur->child; while (s != NULL) { printf("姓名:%s\t学号:%d\n", s->name, s->
时间: 2024-02-14 11:34:02 浏览: 122
id); s = s->next; } return; } cur = cur->child; } printf("该部门不存在!\n"); }
// 修改指定学号的成员的部门 void modifyDept(int id, char *newDept) { Student *cur = root; while (cur != NULL) { Student *s = cur->child; while (s != NULL) { if (s->id == id) { strcpy(s->dept, newDept); // 修改部门 return; } s = s->next; } cur = cur->child; } printf("该学号不存在!\n"); }
// 主函数 int main() { addStudent("办公室", "张三", 1001); addStudent("办公室", "李四", 1002); addStudent("技术部", "王五", 1003); addStudent("技术部", "赵六", 1004); addStudent("财务部", "孙七", 1005); addStudent("人力资源部", "周八", 1006); printf("修改前:\n"); printDept("办公室"); printDept("技术部"); modifyDept(1001, "技术部"); printf("修改后:\n"); printDept("办公室"); printDept("技术部"); return 0; }
在主函数中新增了一个“修改指定学号的成员的部门”函数 modifyDept,它的作用是根据输入的学号和新的部门名称,找到对应的学生节点并修改其部门信息。在该函数中,我们需要遍历整个学生会组织架构来查找指定学号的学生节点,然后修改其部门信息即可。最后在主函数中调用该函数进行测试。
阅读全文