c语言向链表中插入节点
时间: 2023-09-29 09:08:47 浏览: 103
当然,我可以帮你提供 C 语言中向链表中插入节点和删除节点的函数。以下是示例代码:
1. 向链表中插入节点的函数:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链表结点结构体
typedef struct Node {
int data;
struct Node* next;
} Node;
// 向链表中插入节点
void insertNode(Node** head, int newData) {
// 创建新节点
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = newData;
newNode->next = NULL;
// 如果链表为空,将新节点设为头结点
if (*head == NULL) {
*head = newNode;
return;
}
// 找到链表的最后一个结点
Node* lastNode = *head;
while (lastNode->next ! NULL) {
lastNode = lastNode->next;
}
// 将新节点连接到最后一个结点之后
lastNode->next = newNode;
}
// 打印链表的元素
void printList(Node* head) {
Node* current = head;
while (current != NULL) {
printf("%d ", current->data);
current = current->next;
}
printf("\n");
}
int main() {
Node* head = NULL; // 初始化为空链表
// 向链表中插入节点
insertNode(&head, 1);
insertNode(&head, 2);
insertNode(&head, 3);
// 打印链表的元素
printf("链表的元素为: ");
printList(head);
return 0;
}
```
2. 从链表中删除节点的函数:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链表结点结构体
typedef struct Node {
int data;
struct Node* next;
} Node;
// 从链表中删除节点
void deleteNode(Node** head, int key) {
// 如果链表为空,直接返回
if (*head == NULL)
return;
// 如果要删除的节点是头结点
if ((*head)->data == key) {
Node* temp = *head;
*head = (*head)->next;
free(temp);
return;
}
// 找到要删除节点的前一个节点
Node* prev = *head;
while (prev->next != NULL && prev->next->data != key) {
prev = prev->next;
}
// 如果找不到
阅读全文