程序描述
今天对数据结构之单链表部分进行全面的总结 写了一些链表的基本操作程序
程序实现
单链表的头文件
1、链表单一结点结构体定义
由于未指定数据类型 所以使用void*类型,为空类型 可以通过用户定义的类型进行强制类型转换
typedef struct LINKNODE
{
void* data; // 无类型指针 指向任何类型的数据
struct LINKNODE *next;
}LinkNode;
2、链表结构体
typedef struct LINKLIST
{
LinkNode *head;
int size; // 没有容量的概念
}LinkList;
3、打印函数指针
定义 PRINTLINKNODE 类型 用来定义打印函数
typedef void(*PRINTLINKNODE)(void*);
4、初始化链表
LinkList* Init_LinkList();
5、指定位置插入数据
void Insert_LinkList(LinkList *list, int pos, void* data);
6、删除指定位置的值
void RemoveByPos_LinkList(LinkList *list, int pos);
7、获得链表的长度
int Size_LinkList(LinkList *list);
8、返回第一个结点
void* Front_LinkList(LinkList *list);
9、查找
int Find_LinkList(LinkList *list, void* data);
10、打印链表
void Print_LinkList(LinkList *list, PRINTLINKNODE print);
11、释放链表内存
void FresSapce_LinkList(LinkList *list);
函数主体
1、初始化链表
LinkList* Init_LinkList()
{
LinkList *list = (LinkList*)malloc(sizeof(LinkList));
list->size = 0;
// 头结点不保存数据信息
list->head = (LinkNode*)malloc(sizeof(LinkNode));
list-&g