#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义Employee结构体
typedef struct Employee {
char *name;
char *department;
float salary;
struct Employee *next;
} Employee;
// 向链表头部添加新员工
Employee* addEmployee(Employee **head, const char *newName, const char *newDepartment, float newSalary) {
// 分配新的Employee结构体节点内存
Employee *newEmployee = (Employee*)malloc(sizeof(Employee));
if (newEmployee == NULL) {
fprintf(stderr, "内存分配失败\n");
return NULL;
}
// 分配name和department的内存并复制内容
newEmployee->name = (char*)malloc(strlen(newName) + 1);
if (newEmployee->name == NULL) {
fprintf(stderr, "内存分配失败\n");
free(newEmployee);
return NULL;
}
strcpy(newEmployee->name, newName);
newEmployee->department = (char*)malloc(strlen(newDepartment) + 1);
if (newEmployee->department == NULL) {
fprintf(stderr, "内存分配失败\n");
free(newEmployee->name);
free(newEmployee);
return NULL;
}
strcpy(newEmployee->department, newDepartment);
newEmployee->salary = newSalary;
newEmployee->next = *head;
*head = newEmployee;
return newEmployee;
}
// 释放链表中所有节点的内存
void freeEmployeeList(Employee *head) {
Employee *current = head;
Employee *next;
while (current != NULL) {
next = current->next;
free(current->name);
free(current->department);
free(current);
current = next;
}
}
int main() {
Employee *head = NULL;
// 添加员工
addEmployee(&head, "Alice", "HR", 5000.0);
addEmployee(&head, "Bob", "Engineering", 6000.0);
// 释放链表内存
freeEmployeeList(head);
return 0;
}