目录
先看看项目文件:
总共3个文件,
LinkList.h 是头文件,包含各种函数的定义;
LinkList.c 是源文件,包含各种函数的具体功能实现,以及调用;
main.c 是主函数文件,包含主函数;
1. LinkList.h头文件(函数声明);
1. 链表的结构体定义,包括头结点head和当前元素个数size;
2. 链表结点的结构体定义,包括数据域data和指针域next;
3. 对结构体操作的一系列函数的声明;
#ifndef LINK_LIST_H
#define LINK_LIST_H
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
//链表结点的结构体
typedef struct LINKNODE{
void* data;// 指向任何数据类型的数据域
struct LINKNODE* next;// struct LINKNODE* 类型的指针域
}LinkNode;
//整个链表的结构体
typedef struct LINKLIST{
LinkNode* head;//头结点
int size;//当前元素的个数
//不需要容量
}LinkList;
//打印回调函数指针
typedef void(*PRINTLINKNODE)(void*);
//一系列对单链表LINKLIST操作的函数
//初始化链表
LinkList* Init_LinkList();
//指定位置插入
void Insert_LinkList(LinkList* list, int pos, void* data);
//删除指定位置的值
void RemoveByPos_LinkList(LinkList* list, int pos);
//获得链表的长度
int Size_LinkList(LinkList* list);
//查找
int Find_LinkList(LinkList* list, void* data);
//返回第一个结点
void* Front_LinkList(LinkList* list);
//打印链表结点,用户传入的数据转换成void*类型的
void Print_LinkList(LinkList* list, PRINTLINKNODE print);
//释放链表内存
void FreeSpace_LinkList(LinkList* list);
#endif
2. LinkList.c源文件(函数实现);
1. 各种函功能的实现;
2. 头文件#inclde "LinkList.h"的引入;
#include "LinkList.h";
//初始化链表
LinkList* Init_LinkList(){
return NULL;
}
//指定位置插入
void Insert_LinkList(LinkList* list, int pos, void* data){
}
//删除指定位置的值
void RemoveByPos_LinkList(LinkList* list, int pos){
}
//获得链表的长度
int Size_LinkList(LinkList* list){
return 0;
}
//查找
int Find_LinkList(LinkList* list, void* data){
return 0;
}
//返回第一个结点
void* Front_LinkList(LinkList* list){
return NULL;
}
//打印链表结点,用户传入的数据转换成void*类型的
void Print_LinkList(LinkList* list, PRINTLINKNODE print){
}
//释放链表内存
void FreeSpace_LinkList(LinkList* list){
}
3.源文件main.c(包括主函数);
1. 包括主函数main.c;
2. 头文件#inclde "LinkList.h"的引入;
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "LinkList.h";
int main(void){
system("pause");
return 0;
}
经过测试,没有问题!