数据结构c语言带有头节点的单链表在某一个位置插入
时间: 2023-10-10 11:09:29 浏览: 51
假设你要在单链表的第i个位置插入一个新节点,你可以按以下步骤进行操作:
1. 创建一个新的节点,并为其分配内存空间。
2. 将新节点的数据域赋值为待插入的数据。
3. 找到第i-1个节点,即插入位置的前一个节点。
4. 将新节点的next指针指向第i个节点。
5. 将第i-1个节点的next指针指向新节点。
下面是一个示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义一个带有头节点的单链表节点结构体
typedef struct ListNode {
int data;
struct ListNode* next;
} ListNode;
// 在单链表的第i个位置插入一个新节点
void insertNode(ListNode* head, int i, int value) {
// 创建新节点
ListNode* newNode = (ListNode*)malloc(sizeof(ListNode));
newNode->data = value;
newNode->next = NULL;
// 找到第i-1个节点
ListNode* p = head;
int j = 0;
while (p && j < i - 1) {
p = p->next;
j++;
}
// 插入新节点
if (!p || j > i - 1) {
printf("插入位置错误!\n");
return;
}
newNode->next = p->next;
p->next = newNode;
}
// 打印单链表
void printList(ListNode* head) {
ListNode* p = head->next;
while (p) {
printf("%d ", p->data);
p = p->next;
}
printf("\n");
}
int main() {
// 初始化带有头节点的单链表
ListNode* head = (ListNode*)malloc(sizeof(ListNode));
head->next = NULL;
// 插入节点
insertNode(head, 1, 10); // 在第1个位置插入节点,节点值为10
insertNode(head, 2, 20); // 在第2个位置插入节点,节点值为20
insertNode(head, 1, 30); // 在第1个位置插入节点,节点值为30
// 打印单链表
printList(head);
return 0;
}
```
输出结果为:30 10 20