C/C++:编写函数deln,具有删除链表中第n个结点的功能。再编写主函数,按输入顺序建立不带头结点的职工信息单链表,然后调用del函数删除某个职工的信息,并输出删除后的职工信息表中的职工信息。假设链表结构如下: struct staff { char num[6]; //职工工号 char name[20]; //职工姓名 double wage; //职工工资 };在上一题目建立的链表中增加一个按工号num修改该职工工资wage的函数。再编写主函数,对某一具体职工的信息进行更改。
时间: 2024-02-19 14:58:11 浏览: 22
C++代码如下:
```cpp
#include <iostream>
#include <cstring>
using namespace std;
struct staff
{
char num[6];
char name[20];
double wage;
staff *next;
};
void deln(staff *&head, int n) // 删除链表中第n个节点
{
if (n == 1) // 删除第一个节点
{
staff *p = head;
head = head->next;
delete p;
return;
}
staff *p = head;
for (int i = 2; i < n && p != NULL; i++) // 找到要删除的节点的前一个节点
{
p = p->next;
}
if (p == NULL || p->next == NULL) // 链表中没有第n个节点
{
return;
}
staff *q = p->next; // q指向要删除的节点
p->next = q->next;
delete q;
}
void modify(staff *&head, const char *num, double wage) // 按工号修改职工工资
{
staff *p = head;
while (p != NULL && strcmp(p->num, num) != 0) // 找到要修改的节点
{
p = p->next;
}
if (p != NULL) // 找到了
{
p->wage = wage;
}
}
int main()
{
staff *head = NULL;
int n;
cout << "请输入职工人数:";
cin >> n;
for (int i = 0; i < n; i++)
{
cout << "请输入第" << i+1 << "个职工的信息(工号、姓名、工资):";
staff *p = new staff;
cin >> p->num >> p->name >> p->wage;
p->next = NULL;
if (head == NULL)
{
head = p;
}
else
{
staff *q = head;
while (q->next != NULL)
{
q = q->next;
}
q->next = p;
}
}
cout << "请输入要删除职工的位置:";
int pos;
cin >> pos;
deln(head, pos);
cout << "请输入要修改职工的工号和工资:";
char num[6];
double wage;
cin >> num >> wage;
modify(head, num, wage);
cout << "删除和修改之后的职工信息:" << endl;
staff *p = head;
while (p != NULL)
{
cout << p->num << " " << p->name << " " << p->wage << endl;
p = p->next;
}
return 0;
}
```
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![.pdf](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)