数据结构对单链表进行数据排序 http://bbs.csdn.net/topics/392201633
我可以根据你的需求提供以下步骤来实现带头节点的单链表存储职工信息的管理系统:
例如,可以定义一个结构体来表示职工信息节点,其中包括职工编号、职工姓名、职工工资等信息。然后定义一个头节点,用来指向链表中的第一个职工信息节点。同时,可以定义一个变量表示链表中职工信息节点的数量。
示例代码:
// 定义职工信息链表节点
struct Employee {
int id; // 职工编号
string name; // 职工姓名
int salary; // 职工工资
Employee* next; // 指向下一个职工信息节点的指针
};
// 定义职工信息链表的头指针
Employee* head = new Employee();
// 初始化头指针
head->id = -1;
head->name = "";
head->salary = -1;
head->next = NULL;
// 定义链表节点数量变量
int numEmployees = 0;
例如,可以定义一个函数来添加新的职工信息节点到链表中,实现时需要先找到链表最后一个节点,然后将新节点的指针赋值给最后一个节点的next,从而将新节点插入链表的末尾。
示例代码:
// 在链表末尾添加新的职工信息节点
void addNewEmployee(int id, string name, int salary) {
Employee* cur = head;
while (cur->next != NULL) {
cur = cur->next;
}
Employee* newEmployee = new Employee();
newEmployee->id = id;
newEmployee->name = name;
newEmployee->salary = salary;
newEmployee->next = NULL;
cur->next = newEmployee;
numEmployees++;
}
在删除职工信息节点时,需要先找到待删除节点的前一个节点,然后将前一个节点的next指针指向待删除节点的后一个节点。
示例代码:
// 根据职工编号从链表中删除职工信息节点
void deleteEmployee(int id) {
Employee* cur = head->next;
Employee* prev = head;
while (cur != NULL) {
if (cur->id == id) {
prev->next = cur->next;
delete cur;
numEmployees--;
return;
}
prev = cur;
cur = cur->next;
}
}
在修改职工信息时,只需要遍历链表,找到待修改节点,然后修改其属性。
示例代码:
// 根据职工编号修改职工信息
void updateEmployee(int id, string name, int salary) {
Employee* cur = head->next;
while (cur != NULL) {
if (cur->id == id) {
cur->name = name;
cur->salary = salary;
return;
}
cur = cur->next;
}
}
示例代码:
// 输出链表中所有职工信息
void printAllEmployees() {
Employee* cur = head->next;
while (cur != NULL) {
cout << "ID: " << cur->id << ", "
<< "Name: " << cur->name << ", "
<< "Salary: " << cur->salary << endl;
cur = cur->next;
}
}
通过以上三个步骤,就可以实现带头节点的单链表存储职工信息的管理系统。当然,这只是一个基本的框架,你可以根据需要增加其他功能和细节处理来完善程序。