用c语言写一个单链表包含12个操作,包含头文件和源文件
时间: 2024-09-14 08:06:20 浏览: 49
C语言头文件组织与包含原则_c语言头文件_c语言头文件组织与包含原则_
在C语言中创建一个包含12个基本操作的单链表,通常会涉及到数据结构的初始化、插入、删除、查找等核心操作。以下是简单的实现框架,包括了头文件`linklist.h`和源文件`linklist.c`:
**linklist.h (头文件)**
```c
#ifndef LINKLIST_H
#define LINKLIST_H
// 定义链表节点结构体
typedef struct Node {
int data;
struct Node* next;
} Node;
// 链表操作函数声明
Node* create_list(); // 创建空链表
void insert_at_end(Node** head, int value); // 在末尾插入元素
void delete_node(Node** head, int value); // 删除值为value的节点
bool search_node(Node* head, int value); // 查找是否存在某个值
void display_list(Node* head); // 打印链表内容
#endif
```
**linklist.c (源文件)**
```c
#include "linklist.h"
// 实现函数
Node* create_list() {
Node* head = NULL;
return head;
}
void insert_at_end(Node** head, int value) {
if (*head == NULL) {
*head = (Node*)malloc(sizeof(Node));
(*head)->data = value;
(*head)->next = NULL;
} else {
Node* temp = *head;
while (temp->next != NULL) {
temp = temp->next;
}
temp->next = (Node*)malloc(sizeof(Node));
temp->next->data = value;
temp->next->next = NULL;
}
}
void delete_node(Node** head, int value) {
if (*head != NULL && (*head)->data == value) {
Node* temp = *head;
*head = (*head)->next;
free(temp);
} else {
Node* current = *head, *prev = NULL;
while (current != NULL && current->data != value) {
prev = current;
current = current->next;
}
if (current != NULL) {
prev->next = current->next;
free(current);
}
}
}
bool search_node(Node* head, int value) {
Node* current = head;
while (current != NULL) {
if (current->data == value)
return true;
current = current->next;
}
return false;
}
void display_list(Node* head) {
Node* temp = head;
while (temp != NULL) {
printf("%d -> ", temp->data);
temp = temp->next;
}
printf("NULL\n");
}
```
阅读全文