数据结构c语言实现 带有头节点单链表的创建插入删除查找功能
时间: 2023-08-15 19:03:45 浏览: 106
C语言实现单向链表的创建、插入,删除节点,和2个链表合并
5星 · 资源好评率100%
好的,下面是带有头节点的单链表的实现,包括创建、插入、删除和查找功能。代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
//定义单链表结构体
typedef struct Node {
int data;
struct Node *next;
} Node, *LinkList;
//创建一个带有头节点的单链表
LinkList createList() {
LinkList head = (LinkList) malloc(sizeof(Node));
head->next = NULL;
return head;
}
//插入节点
void insertNode(LinkList L, int x) {
LinkList p;
p = (LinkList) malloc(sizeof(Node));
p->data = x;
p->next = L->next;
L->next = p;
}
//删除节点
void deleteNode(LinkList L, int x) {
LinkList p, q;
p = L->next;
while (p != NULL && p->data != x) {
q = p;
p = p->next;
}
if (p != NULL) {
q->next = p->next;
free(p);
}
}
//查找节点
LinkList findNode(LinkList L, int x) {
LinkList p;
p = L->next;
while (p != NULL && p->data != x) {
p = p->next;
}
return p;
}
//打印单链表
void printList(LinkList L) {
LinkList p;
p = L->next;
while (p != NULL) {
printf("%d ", p->data);
p = p->next;
}
printf("\n");
}
int main() {
LinkList L = createList();
insertNode(L, 2);
insertNode(L, 4);
insertNode(L, 6);
insertNode(L, 8);
printList(L);
deleteNode(L, 4);
printList(L);
LinkList node = findNode(L, 6);
printf("查找到节点的值为:%d\n", node->data);
return 0;
}
```
上述代码中,我们首先定义了单链表结构体 `Node`,然后定义了带有头节点的单链表类型 `LinkList`。接着实现了创建单链表、插入节点、删除节点、查找节点和打印单链表等操作。在 `main` 函数中,我们创建了一个带有头节点的单链表,并对其进行了插入、删除、查找和打印操作,以验证我们的实现。
阅读全文