数据结构c语言带有头节点的单链表在某一个位置插入
时间: 2023-10-10 13:09:29 浏览: 91
C语言 在链表的指定位置插入节点
5星 · 资源好评率100%
在带有头节点的单链表中插入一个节点可以分为以下几个步骤:
1. 创建一个新节点,将要插入的数据存储到该节点中。
2. 找到要插入位置的前一个节点,可以使用循环遍历链表找到该节点。
3. 将新节点的 next 指针指向前一个节点的 next 指针所指向的节点。
4. 将前一个节点的 next 指针指向新节点。
下面是一个示例代码:
```
#include <stdio.h>
#include <stdlib.h>
// 定义链表节点
typedef struct ListNode {
int val;
struct ListNode *next;
} ListNode;
// 在带有头节点的单链表中插入一个节点
void insertNode(ListNode* head, int index, int val) {
// 创建新节点
ListNode* newNode = (ListNode*)malloc(sizeof(ListNode));
newNode->val = val;
// 找到要插入位置的前一个节点
ListNode* prev = head;
for (int i = 0; i < index && prev->next != NULL; i++) {
prev = prev->next;
}
// 插入新节点
newNode->next = prev->next;
prev->next = newNode;
}
// 输出链表中的所有节点
void printList(ListNode* head) {
ListNode* cur = head->next;
while (cur != NULL) {
printf("%d ", cur->val);
cur = cur->next;
}
printf("\n");
}
int main() {
// 创建带有头节点的单链表
ListNode* head = (ListNode*)malloc(sizeof(ListNode));
head->next = NULL;
// 在链表中插入节点
insertNode(head, 0, 1);
insertNode(head, 1, 3);
insertNode(head, 1, 2);
insertNode(head, 3, 4);
// 输出链表中的所有节点
printList(head);
return 0;
}
```
在上面的示例代码中,我们定义了一个带有头节点的单链表,并实现了在指定位置插入节点的功能。在 main 函数中,我们插入了四个节点,并输出了链表中的所有节点。
阅读全文