创建程序文件exp1-3.cpp,利用单链表实现职工信息的综合运算。
时间: 2024-10-11 12:09:16 浏览: 35
exp2-1.cpp
创建一个名为"exp1-3.cpp"的程序文件,可以用来实现基于单链表的数据结构,用于存储职工信息并支持常见的综合运算,如添加、删除、查找以及合并等操作。在C++中,你可以按照以下步骤设计这个程序:
1. 首先,定义一个`Employee`节点类,包含姓名、工号等属性,并提供构造函数和析构函数。
```cpp
class Employee {
public:
string name;
int id;
Employee(const string& name, int id) : name(name), id(id) {}
~Employee() {}
// 其他可能需要的方法,如显示员工信息
void display() const {
cout << "Name: " << name << ", ID: " << id << endl;
}
};
```
2. 定义一个单链表类`EmployeeList`,包括头指针、增加元素的方法(如`addEmployee`)、删除元素的方法(如`deleteEmployee`),以及查找和合并功能。
```cpp
class EmployeeList {
private:
struct Node {
Employee* employee;
Node* next;
};
Node* head;
public:
EmployeeList() : head(nullptr) {}
// 添加员工
void addEmployee(Employee* e) {
Node* newNode = new Node{e, nullptr};
if (head == nullptr) {
head = newNode;
} else {
Node* current = head;
while (current->next != nullptr) {
current = current->next;
}
current->next = newNode;
}
}
// 删除员工
void deleteEmployee(int id) {
if (head == nullptr) return;
if (head->employee->id == id) {
Node* temp = head;
head = head->next;
delete temp;
return;
}
Node* current = head;
while (current->next != nullptr && current->next->employee->id != id) {
current = current->next;
}
if (current->next != nullptr) {
current->next = current->next->next;
delete current->next;
}
}
// ...其他方法,比如查找和合并
private:
// 保护成员,防止直接访问
friend class Node;
};
```
3. 程序入口部分,读取用户输入,创建`Employee`对象和`EmployeeList`实例,然后根据需求调用相应的操作。
```cpp
int main() {
EmployeeList empList;
// 用户输入和处理...
// 示例:
Employee emp1("John", 1001);
empList.addEmployee(&emp1);
// 删除员工
empList.deleteEmployee(1001);
// 查找员工
Employee* foundEmp = empList.findEmployee(1002); // 如果存在返回指针,不存在返回nullptr
// 合并两个链表
EmployeeList otherList; // 初始化另一个列表
// ...
// 结束程序
return 0;
}
```
阅读全文