在上题基础上,新增加一个职工的数据,按职工号的顺序插入链表,新插入的职工号为106。写一函数insert来插入新结点。C语言
时间: 2023-06-09 21:07:18 浏览: 57
中的链表结构体为:
```
typedef struct employee{
int id;
char name[20];
float salary;
struct employee *next;
} Employee;
```
新插入的职工数据为:
```
Employee new_employee = {106, "Tom", 5000, NULL};
```
函数定义如下:
```
void insert(Employee **head, Employee new_employee) {
Employee *prev = NULL, *curr = *head;
while (curr && curr->id < new_employee.id) {
prev = curr;
curr = curr->next;
}
Employee *new_node = (Employee *)malloc(sizeof(Employee));
*new_node = new_employee;
new_node->next = curr;
if (prev) {
prev->next = new_node;
} else {
*head = new_node;
}
}
```
函数说明:
- head:链表头指针的指针,因为可能要在头部插入新的节点;
- new_employee:新插入的职工数据;
- prev、curr:指向当前节点和上一个节点;
- new_node:新创建的节点;
- 首先在链表中找到要插入的位置,即要找到比新职工号大的第一个节点;
- 创建新的节点,把新职工数据复制到节点中,链接到当前节点和下一个节点中间;
- 如果当前节点不是头节点,就把上一个节点的 next 指针指向新节点,否则更新头指针。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.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)
![](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)
![](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)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)