c语言单链表的增删改查代码
时间: 2023-09-16 14:07:37 浏览: 134
c语言 单链表的增删改查
好的,以下是 C 语言单链表的增删改查代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链表节点结构体
struct Node {
int data;
struct Node* next;
};
// 定义链表头节点指针
struct Node* head = NULL;
// 插入节点函数
void insertNode(int data) {
struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
newNode->data = data;
newNode->next = NULL;
if (head == NULL) {
head = newNode;
} else {
struct Node* temp = head;
while (temp->next != NULL) {
temp = temp->next;
}
temp->next = newNode;
}
printf("插入节点成功!\n");
}
// 删除节点函数
void deleteNode(int data) {
if (head == NULL) {
printf("链表为空,无法删除!\n");
return;
}
struct Node* temp = head;
if (temp->data == data) {
head = head->next;
free(temp);
printf("删除节点成功!\n");
return;
}
while (temp->next != NULL && temp->next->data != data) {
temp = temp->next;
}
if (temp->next == NULL) {
printf("未找到要删除的节点!\n");
return;
}
struct Node* deleteNode = temp->next;
temp->next = deleteNode->next;
free(deleteNode);
printf("删除节点成功!\n");
}
// 修改节点函数
void modifyNode(int data, int newData) {
if (head == NULL) {
printf("链表为空,无法修改!\n");
return;
}
struct Node* temp = head;
while (temp != NULL && temp->data != data) {
temp = temp->next;
}
if (temp == NULL) {
printf("未找到要修改的节点!\n");
return;
}
temp->data = newData;
printf("修改节点成功!\n");
}
// 查找节点函数
void searchNode(int data) {
if (head == NULL) {
printf("链表为空,无法查找!\n");
return;
}
struct Node* temp = head;
while (temp != NULL && temp->data != data) {
temp = temp->next;
}
if (temp == NULL) {
printf("未找到要查找的节点!\n");
return;
}
printf("找到要查找的节点,数据为:%d\n", temp->data);
}
// 打印链表函数
void printList() {
if (head == NULL) {
printf("链表为空,无法打印!\n");
return;
}
struct Node* temp = head;
printf("链表中的节点数据为:");
while (temp != NULL) {
printf("%d ", temp->data);
temp = temp->next;
}
printf("\n");
}
int main() {
insertNode(1);
insertNode(2);
insertNode(3);
printList();
modifyNode(2, 4);
printList();
searchNode(3);
deleteNode(2);
printList();
return 0;
}
```
以上是单链表的基本操作函数,包括插入节点、删除节点、修改节点、查找节点以及打印链表等功能。你可以根据需要进行修改和扩展。
阅读全文