#ifndef LINKLIST
#define LINKLIST
#include <stdio.h>
#include <stdlib.h>
typedef struct LINKNODE
{
struct LINKNODE* next;
}LinkNode;
typedef struct LINKLIST
{
LinkNode head;
int size;
}LinkList;
typedef void(PRINT)(LinkNode* data);
LinkList* Init_LinkList();
void Insert_LinkList(LinkList* list, int pos, LinkNode* data);
void Remove_LinkList(LinkList* list, int pos);
int Size_LinkList(LinkList* list);
void Print_LinkList(LinkList* list);
void Free_LinkList(LinkList* list);
int Find_LinkList(LinkList* list, LinkNode* data);
#endif
#include "LinkList.h"
LinkList* Init_LinkList()
{
LinkList* list = (LinkList*)malloc(sizeof(LinkList));
list->size = 0;
list->head.next = NULL;
return list;
}
void Insert_LinkList(LinkList* list, int pos, LinkNode* data)
{
if (list == NULL || data == NULL)
{
return;
}
if (pos < 0 || pos >= list->size)
{
pos = list->size;
}
LinkNode* pCurrent = &(list->head);
for (int i = 0; i < pos; i++)
{
pCurrent = pCurrent->next;
}
data->next = pCurrent->next;
pCurrent->next = data;
list->size++;
}
void Remove_LinkList(LinkList* list, int pos)
{
}
int Size_LinkList(LinkList* list)
{
}
void Print_LinkList(LinkList* list,PRINT print)
{
if (list == NULL)
{
return;
}
LinkNode* pCurrent = list->head.next;
while (pCurrent != NULL)
{
print(pCurrent);
pCurrent = pCurrent->next;
}
}
void Free_LinkList(LinkList* list)
{
if (list == NULL)
{
return;
}
free(list);
}
int Find_LinkList(LinkList* list, LinkNode* data)
{
}
#include "LinkList.h"
typedef struct PERSON
{
LinkNode node;
char name[64];
int age;
}Person;
void print(LinkNode* data)
{
Person* p = (Person*)data;
printf("%s %d\n", p->name,p->age);
}
int main()
{
LinkList* list = Init_LinkList();
Person p1, p2, p3, p4, p5;
strcpy(p1.name, "aaa");
p1.age = 18;
strcpy(p2.name, "bbb");
p2.age = 18;
strcpy(p3.name, "ccc");
p3.age = 18;
strcpy(p4.name, "ddd");
p4.age = 18;
strcpy(p5.name, "eee");
p5.age = 18;
Insert_LinkList(list,0,(LinkNode*)&p1);
Insert_LinkList(list, 0, (LinkNode*)&p2);
Insert_LinkList(list, 0, (LinkNode*)&p3);
Insert_LinkList(list, 0, (LinkNode*)&p4);
Insert_LinkList(list, 0, (LinkNode*)&p5);
Print_LinkList(list,print);
Free_LinkList(list);
system("pause");
}