c语言带头结点的单链表在指定位置插入
时间: 2023-10-19 08:05:41 浏览: 93
C语言 在链表的指定位置插入节点
5星 · 资源好评率100%
下面是在指定位置插入节点的C语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 链表节点结构体定义
typedef struct Node {
int data;
struct Node *next;
} Node, *LinkedList;
// 创建链表
LinkedList createList() {
LinkedList head = (LinkedList)malloc(sizeof(Node));
head->next = NULL;
return head;
}
// 在链表指定位置插入节点
void insertNode(LinkedList L, int pos, int data) {
Node *p = L, *newNode;
int i = 0;
while(p && i < pos - 1) {
p = p->next;
i++;
}
if(!p || i > pos - 1) {
printf("插入位置不合法!\n");
return;
}
newNode = (Node*)malloc(sizeof(Node));
newNode->data = data;
newNode->next = p->next;
p->next = newNode;
}
// 打印链表
void printList(LinkedList L) {
Node *p = L->next;
while(p) {
printf("%d ", p->data);
p = p->next;
}
printf("\n");
}
int main() {
LinkedList L = createList();
for(int i = 1; i <= 5; i++) {
insertNode(L, i, i*10);
}
printf("插入节点前:");
printList(L);
insertNode(L, 3, 35);
printf("插入节点后:");
printList(L);
return 0;
}
```
上述代码中,`createList()`函数用于创建一个带头结点的空链表,`insertNode()`函数用于在链表的指定位置插入一个节点,`printList()`函数用于打印链表中的所有节点。
在`main()`函数中,我们首先调用`createList()`函数创建一个空链表,然后调用`insertNode()`函数插入5个节点,最后在第3个位置上插入一个值为35的节点,并调用`printList()`函数打印链表中的所有节点。
阅读全文