用c语言写一个链表,包括链表所有操作
时间: 2023-05-17 14:07:59 浏览: 119
好的,以下是用 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 insert(Node* head, int data) {
Node* p = head;
while (p->next != NULL) {
p = p->next;
}
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = data;
newNode->next = NULL;
p->next = newNode;
}
// 删除链表中指定值的节点
void delete(Node* head, int data) {
Node* p = head;
while (p->next != NULL) {
if (p->next->data == data) {
Node* temp = p->next;
p->next = p->next->next;
free(temp);
return;
}
p = p->next;
}
}
// 遍历链表并输出节点的值
void traverse(Node* head) {
Node* p = head->next;
while (p != NULL) {
printf("%d ", p->data);
p = p->next;
}
printf("\n");
}
// 释放链表内存
void destroy(Node* head) {
Node* p = head;
while (p != NULL) {
Node* temp = p;
p = p->next;
free(temp);
}
}
int main() {
Node* head = initList(); // 初始化链表
insert(head, 1); // 在链表尾部插入节点
insert(head, 2);
insert(head, 3);
traverse(head); // 遍历链表并输出节点的值
delete(head, 2); // 删除链表中指定值的节点
traverse(head);
destroy(head); // 释放链表内存
return 0;
}
```
这段代码实现了链表的初始化、在链表尾部插入节点、删除链表中指定值的节点、遍历链表并输出节点的值、释放链表内存等操作。
阅读全文