C/C++:编写函数deln,具有删除链表中第n个结点的功能。再编写主函数,按输入顺序建立不带头结点的职工信息单链表,然后调用del函数删除某个职工的信息,并输出删除后的职工信息表中的职工信息。假设链表结构如下: struct staff { char num[6]; //职工工号 char name[20]; //职工姓名 double wage; //职工工资 };
时间: 2024-02-19 19:58:03 浏览: 28
C++代码如下:
```c++
#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 *temp = head;
head = head->next;
delete temp;
return;
}
staff *p = head;
for (int i = 1; i < n - 1; i++)
{
p = p->next;
}
staff *temp = p->next;
p->next = temp->next;
delete temp;
}
int main()
{
int n; //链表长度
staff *head = NULL, *tail = NULL;
cin >> n;
for (int i = 1; i <= n; i++) //按输入顺序建立链表
{
staff *p = new staff;
cin >> p->num >> p->name >> p->wage;
p->next = NULL;
if (head == NULL)
{
head = p;
tail = p;
}
else
{
tail->next = p;
tail = p;
}
}
int m; //要删除的职工的编号
cin >> m;
deln(head, m); //调用deln函数删除第m个职工的信息
staff *p = head;
while (p != NULL) //输出删除后的职工信息表中的职工信息
{
cout << p->num << " " << p->name << " " << p->wage << endl;
p = p->next;
}
return 0;
}
```
注意:这里假设链表中第一个节点为第1个节点,第二个节点为第2个节点,以此类推。如果题目中要求链表中第一个节点为第0个节点,那么在deln函数中需要稍作修改。
相关推荐
![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)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)