使用c++语言用单链表实现职工信息的综合运算
时间: 2024-10-11 20:09:33 浏览: 34
在C++中,我们可以使用单链表来存储职工信息,并提供一些基本的综合运算,比如添加、删除、查找以及修改员工信息等。这里是一个简单的例子,展示了如何创建一个职工信息节点结构和相关的操作:
```cpp
// 职工信息节点定义
class Employee {
public:
string name;
int id;
// 其他属性...
private:
Employee* next; // 指向下一个员工的指针
// 构造函数
Employee(string n, int i) : name(n), id(i), next(nullptr) {}
// 添加新员工到链表末尾
friend void addEmployee(Employee** head, Employee& newEmp);
};
// 添加员工到链表的函数
void addEmployee(Employee** head, Employee& newEmp) {
if (*head == nullptr) {
*head = &newEmp;
} else {
Employee* curr = *head;
while (curr->next != nullptr) {
curr = curr->next;
}
curr->next = &newEmp;
}
}
// 删除员工(通过ID查找并删除)
bool deleteEmployee(Employee** head, int id) {
if (*head == nullptr) return false;
if ((*head)->id == id) {
Employee* temp = *head;
*head = (*head)->next;
delete temp;
return true;
}
Employee* curr = *head;
while (curr->next != nullptr && curr->next->id != id) {
curr = curr->next;
}
if (curr->next != nullptr) {
curr->next = curr->next->next;
delete curr->next;
return true;
}
return false;
}
// 修改员工信息
void updateEmployee(Employee** head, int id, string newName, int newId) {
for (Employee* emp = *head; emp != nullptr; emp = emp->next) {
if (emp->id == id) {
emp->name = newName;
emp->id = newId;
break;
}
}
}
// 示例用法
int main() {
Employee* head = nullptr;
Employee emp1("张三", 1001);
Employee emp2("李四", 1002);
addEmployee(&head, emp1); // 添加员工
addEmployee(&head, emp2);
// 删除员工
deleteEmployee(&head, 1001);
// 更新员工信息
updateEmployee(&head, 1002, "王五", 1005);
// 打印链表内容(示例)
Employee* temp = head;
while (temp != nullptr) {
cout << "姓名: " << temp->name << ", ID: " << temp->id << endl;
temp = temp->next;
}
return 0;
}
```
这个例子只是一个基础演示,实际应用可能会需要更复杂的查找算法,例如二分查找,以便快速定位员工。同时,还需要考虑链表的安全性,如在删除元素时处理空指针异常等。
阅读全文