用C语言写一个链表并且有增删改查功能
时间: 2023-03-30 11:03:12 浏览: 116
好的,我可以回答这个问题。链表是一种常见的数据结构,可以用来存储一系列的数据。在 C 语言中,可以通过定义一个结构体来表示链表的每个节点,然后使用指针来连接这些节点。以下是一个简单的链表实现,包括增加、删除、修改和查找功能:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链表节点结构体
typedef struct Node {
int data;
struct Node* next;
} Node;
// 初始化链表
Node* initList() {
Node* head = (Node*)malloc(sizeof(Node));
head->next = NULL;
return head;
}
// 插入节点
void insertNode(Node* head, int data) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = data;
newNode->next = head->next;
head->next = newNode;
}
// 删除节点
void deleteNode(Node* head, int data) {
Node* p = head->next;
Node* pre = head;
while (p != NULL) {
if (p->data == data) {
pre->next = p->next;
free(p);
return;
}
pre = p;
p = p->next;
}
}
// 修改节点
void modifyNode(Node* head, int oldData, int newData) {
Node* p = head->next;
while (p != NULL) {
if (p->data == oldData) {
p->data = newData;
return;
}
p = p->next;
}
}
// 查找节点
Node* findNode(Node* head, int data) {
Node* p = head->next;
while (p != NULL) {
if (p->data == data) {
return p;
}
p = p->next;
}
return NULL;
}
// 打印链表
void printList(Node* head) {
Node* p = head->next;
while (p != NULL) {
printf("%d ", p->data);
p = p->next;
}
printf("\n");
}
int main() {
Node* head = initList();
insertNode(head, 1);
insertNode(head, 2);
insertNode(head, 3);
printList(head);
deleteNode(head, 2);
printList(head);
modifyNode(head, 1, 4);
printList(head);
Node* node = findNode(head, 3);
if (node != NULL) {
printf("找到了节点 %d\n", node->data);
} else {
printf("没有找到节点\n");
}
return ;
}
```
以上就是一个简单的链表实现,包括增加、删除、修改和查找功能。
阅读全文