用链表写一个人力资源信息管理系统,用在数据结构课程设计
时间: 2023-08-04 12:20:47 浏览: 42
好的,下面是一个简单的链表人力资源信息管理系统的实现。
首先,定义一个员工信息结构体,包含员工的姓名、编号、年龄等信息:
```c++
struct Employee {
string name;
int id;
int age;
// 其他员工信息
};
```
然后,定义一个链表节点结构体,包含员工信息和指向下一个节点的指针:
```c++
struct ListNode {
Employee employee;
ListNode* next;
};
```
接着,定义一个链表类,包含链表的头节点、尾节点和节点数量等信息,以及一些基本的操作函数,例如添加、删除、查找等:
```c++
class EmployeeLinkedList {
public:
EmployeeLinkedList() {
head = nullptr;
tail = nullptr;
size = 0;
}
~EmployeeLinkedList() {
ListNode* current = head;
while(current != nullptr) {
ListNode* next = current->next;
delete current;
current = next;
}
head = nullptr;
tail = nullptr;
size = 0;
}
void addEmployee(const Employee& employee) {
ListNode* newNode = new ListNode;
newNode->employee = employee;
newNode->next = nullptr;
if(head == nullptr) {
head = newNode;
tail = newNode;
} else {
tail->next = newNode;
tail = newNode;
}
size++;
}
void deleteEmployee(int id) {
ListNode* current = head;
ListNode* previous = nullptr;
while(current != nullptr && current->employee.id != id) {
previous = current;
current = current->next;
}
if(current != nullptr) {
if(previous == nullptr) {
head = current->next;
} else {
previous->next = current->next;
}
if(current == tail) {
tail = previous;
}
size--;
delete current;
}
}
Employee* findEmployee(int id) {
ListNode* current = head;
while(current != nullptr && current->employee.id != id) {
current = current->next;
}
if(current != nullptr) {
return &(current->employee);
} else {
return nullptr;
}
}
int getSize() const {
return size;
}
private:
ListNode* head;
ListNode* tail;
int size;
};
```
最后,在主函数中可以通过调用链表类的函数来完成员工信息的添加、删除、查找等操作。
这是一个简单的链表人力资源信息管理系统的实现,可以根据具体需要进行修改和完善。