建立一链表结构,每个结点包括职工号, 姓名,部门名和工资(整数)。采用带头结点尾插法建立链表,职工号为0输入结束。然后输入一部门名,删除链表上所有是该部门职工的结点, 输出结果到屏幕上。(建议建链表, 删除信息和输出结果分别用三个自定义函数实现)
时间: 2024-06-08 17:07:52 浏览: 20
以下是C语言代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_NAME_LEN 20
#define MAX_DEPT_LEN 20
// 职工结构体
typedef struct Employee {
int id; // 职工号
char name[MAX_NAME_LEN]; // 姓名
char dept[MAX_DEPT_LEN]; // 部门名
int salary; // 工资
struct Employee *next; // 指向下一个结点的指针
} Employee;
// 打印链表中所有的职工信息
void printEmployeeList(Employee *head) {
Employee *p = head->next;
while (p != NULL) {
printf("%d %s %s %d\n", p->id, p->name, p->dept, p->salary);
p = p->next;
}
}
// 删除指定部门的职工结点
void deleteEmployeeByDept(Employee *head, char *dept) {
Employee *p = head->next;
Employee *pre = head;
while (p != NULL) {
if (strcmp(p->dept, dept) == 0) { // 如果部门名匹配
pre->next = p->next; // 删除该结点
free(p);
p = pre->next;
} else { // 否则继续遍历下一个结点
pre = p;
p = p->next;
}
}
}
int main() {
Employee *head = (Employee*)malloc(sizeof(Employee)); // 创建头结点
head->next = NULL; // 头结点指向为空
// 输入职工信息
int id, salary;
char name[MAX_NAME_LEN], dept[MAX_DEPT_LEN];
printf("请输入职工信息:\n");
scanf("%d", &id);
while (id != 0) {
scanf("%s %s %d", name, dept, &salary);
Employee *p = (Employee*)malloc(sizeof(Employee)); // 创建新结点
p->id = id;
strcpy(p->name, name);
strcpy(p->dept, dept);
p->salary = salary;
p->next = NULL;
// 将新结点插入到链表尾部
Employee *last = head;
while (last->next != NULL) {
last = last->next;
}
last->next = p;
scanf("%d", &id);
}
// 打印链表中所有职工信息
printf("输入的职工信息为:\n");
printEmployeeList(head);
// 删除指定部门的职工结点
char deptToDelete[MAX_DEPT_LEN];
printf("请输入要删除的部门名:\n");
scanf("%s", deptToDelete);
deleteEmployeeByDept(head, deptToDelete);
// 打印删除后的链表中所有职工信息
printf("删除指定部门后的职工信息为:\n");
printEmployeeList(head);
return 0;
}
```
该程序首先创建一个带头结点的链表,然后通过循环不断输入职工信息,将每个职工信息作为一个结点插入到链表的尾部。接着,程序根据用户输入的部门名,删除链表中所有属于该部门的职工结点。最后,程序打印删除后的链表中的所有职工信息。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)