传统的链表通常内部存储的数据节点写固定,数据变更时非常繁琐;通用链表则解决了这个弊端,它采用指针的方式对数据进行存储,根据具体的数据类型确定步长,因此具有一定的实用性
头文件
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#pragma warning(disable:4996)
#define MY_TRUE 1
#define MY_FALSE 0
typedef struct LINKNODE
{
struct LINKNODE *next;
}LinkNode;
typedef struct CIRLINKLIST
{
LinkNode head;
int size;
}CirLinkList;
typedef int(*COMPARE)(LinkNode *data1, LinkNode *data2);
typedef void(*PRINT)(LinkNode *data);
//初始化链表
CirLinkList* InitLinkList();
//插入结点
void InsertListNode(CirLinkList *clist, int pos, LinkNode *data);
//根据值删除结点
void RemoveByVal(CirLinkList* clist, LinkNode *data, COMPARE compare);
//打印函数
void MyPrintList(CirLinkList *clist,PRINT print);
//释放链表
void FreeCirList(CirLinkList *clist);
//链表长度