单链表插入
时间: 2023-07-26 10:03:32 浏览: 92
单链表插入操作是将一个新的节点插入到链表中的指定位置。具体实现步骤如下:
1. 创建一个新的节点,命名为new_node,并设置其数据域为待插入的元素值;
2. 找到插入位置的前一个节点,可以从头结点开始遍历链表,直到找到插入位置的前一个节点,或者链表已经遍历到末尾;
3. 将new_node节点的next指针指向插入位置的后一个节点;
4. 将插入位置的前一个节点的next指针指向new_node节点。
下面是单链表插入操作的示例代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义单链表节点结构体
typedef struct ListNode {
int val;
struct ListNode *next;
} ListNode;
// 在单链表的指定位置插入一个新的元素
void insert(ListNode* head, int pos, int val) {
// 创建新的节点
ListNode* new_node = (ListNode*)malloc(sizeof(ListNode));
new_node->val = val;
new_node->next = NULL;
// 找到插入位置的前一个节点
ListNode* pre = head;
for (int i = 0; i < pos - 1 && pre != NULL; i++) {
pre = pre->next;
}
if (pre == NULL) {
printf("Insert position is invalid!\n");
return;
}
// 插入新的节点
new_node->next = pre->next;
pre->next = new_node;
}
// 打印单链表
void printList(ListNode* head) {
ListNode* p = head->next;
while (p != NULL) {
printf("%d ", p->val);
p = p->next;
}
printf("\n");
}
// 测试单链表插入操作
int main() {
// 创建头结点
ListNode* head = (ListNode*)malloc(sizeof(ListNode));
head->next = NULL;
// 插入元素
insert(head, 1, 1);
insert(head, 2, 2);
insert(head, 3, 3);
insert(head, 4, 4);
printList(head);
return 0;
}
```
输出结果为:1 2 3 4
阅读全文