通用链表
结点:
void* ptr
指针域
运算:常规功能+回调函数
list.h
#ifndef LIST_H
#define LIST_H
#include <stdio.h>
#include <stdbool.h>
// 重定义了函数指针类型 新类型名叫Comper
// 定义函数指针变量 Comper cmp
// cmp即函数指针变量
typedef int (*Comper)(const void*,const void*);
// 通用链表结点
typedef struct Node
{
void* ptr;
struct Node* prev;
struct Node* next;
}Node;
// 通用链表结构
typedef struct List
{
Node* head;
size_t size;
}List;
// 创建链表
List* create_list(void);
// 头添加
void add_head_list(List* list,void* ptr);
// 尾添加
void add_tail_list(List* list,void* ptr);
// 插入
bool insert_list(List* list,size_t index,void* ptr);
// 按位置删除
void* del_index_list(List* list,size_t index);
// 按值删除
void* del_value_list(List* list,void* ptr,
int (*cmp)(const void*,const void*));
// 查询
void* query_list(List* list,void* ptr,Comper cmp);
// 访问
void* access_list(List* list,size_t index);
// 排序
void sort_list(List* list,Comper cmp);
// 清空
void clear_list(List* list);
// 销毁
void destory_list(List* list);
// 遍历
void show_list(List* list,void (*show)(void*));
#endif//LIST_H
list.c
#include <stdlib.h>
#include "list.h"
// 创建结点
static Node* create_node(void* ptr)
{
Node* node = malloc(sizeof(Node));
nod