依据表1信息在机内建立顺序表 问题描述:在该顺序表中完成新增员工、删除离职员工、按工号和姓名查找员工、输出职工信息操作
时间: 2024-10-12 09:12:23 浏览: 56
为了在计算机内存中依据表1的信息建立顺序表并实现你说的操作,首先我们需要将表1的数据转换为顺序表的结构。假设表1是文本文件形式的,每一行代表一个员工的信息,包括工号(ID)、姓名(Name)。我们可以在程序中读取文件并将数据存入顺序列表。
以下是基于这个场景的一个简化示例:
1. **定义员工结构**:
```c
typedef struct {
int id;
char name[50];
} Employee;
```
2. **读取表1创建顺序表**:
```c
void buildEmployeeList(const char* filename, SequenceList* list) {
FILE* file = fopen(filename, "r");
if (file) {
while (!feof(file)) {
Employee e;
fscanf(file, "%d %s", &e.id, e.name); // 读取一行数据
append(list, (void*)&e);
}
fclose(file);
} else {
printf("Error opening file.\n");
}
}
```
3. **新增员工**:
```c
void addEmployee(SequenceList* list, const Employee* newEmp) {
append(list, (void*)newEmp);
}
```
4. **删除离职员工(假设有一个离职标志字段离职状态)**:
```c
void deleteLaidOffEmployee(SequenceList* list, int id) {
for (int i = 0; i < list->size; ++i) {
if (list->data[i].id == id && list->data[i].离职状态 == 1) {
memmove(&list->data[i], &list->data[i + 1], (list->size - i - 1) * sizeof(Employee));
--list->size;
break;
}
}
}
```
5. **查找员工**:
```c
Employee* findEmployeeById(SequenceList* list, int id) {
for (int i = 0; i < list->size; ++i) {
if (list->data[i].id == id) {
return &list->data[i];
}
}
return NULL;
}
```
6. **输出职工信息**:
```c
void printEmployeeInfo(const Employee* emp) {
printf("工号: %d, 姓名: %s\n", emp->id, emp->name);
}
void displayAllEmployees(SequenceList* list) {
for (int i = 0; i < list->size; ++i) {
printEmployeeInfo(&list->data[i]);
}
}
```
阅读全文