linklist.h
#ifndef LINKLIST_H
#define LINKLIST_H
#include<stdlib.h>
#include<stdio.h>
#include<stdio.h>
;
typedef struct LINKNODE {
struct LINKNODE* next;
}LinkNode;
typedef void(*PRINTNODE)(LinkNode*);
typedef struct LINKLIST {
LinkNode head;
int size;
}LinkList;
//初始化链表
LinkList* Init_LinkList();
//插入
void Insert_LinkList(LinkList* list,int pos,LinkNode* date);
//删除
void Remove_LinkList(LinkList list ,int pos);
//查找
int Find_LinkList(LinkList* list,LinkNode *date);
//返回链表大小
int Size_LinkList(LinkList* list);
//打印链表
void Print_LinkList(LinkList *list,PRINTNODE print);
//释放链表内存
void FreeSpace_LinkList(LinkList* list);
#endif
//linklist.c
#include"linklist.h"
//初始化链表
LinkList* Init_LinkList() {
LinkList* list = (LinkList*)malloc(sizeof(LinkList));
list->head.next = NULL;
list->size = 0;
return list;
}
//插入
void Insert_LinkList(LinkList* list, int pos, LinkNode* date) {
if (list == NULL) {
return;
}
if (date == NULL) {
return;
}
if (pos < 0 || list->size < pos) {
pos = list->size;
}
//查找插入位置
LinkNode* pCurrent =&( list->head);
for (int i = 0; i < pos; i++) {
pCurrent = pCurrent->next;
}
date->next = pCurrent->next;
pCurrent->next = date;
list->size++;
return;
}
//删除
void Remove_LinkList(LinkList list, int pos) {
return;
}
//查找
int Find_LinkList(LinkList * list, LinkNode * date) {
return 0;
}
//返回链表大小
int Size_LinkList(LinkList* list) {
return 0;
}
//打印链表
void Print_LinkList(LinkList* list, PRINTNODE print)
{
if (list == NULL) {
return;
}
LinkNode* pCurrent = list->head.next;
while (pCurrent != NULL) {
print(pCurrent);
pCurrent = pCurrent->next;
}
return;
}
//释放链表内存
void FreeSpace_LinkList(LinkList* list) {
if (list == NULL) { return; }
free(list);
return;
}
//main.c
#include"linklist.h"
#include"linklist.h"
typedef struct PERSION {
LinkNode node;
char name[64];
int age;
}Persion;
void MyPrint(LinkNode* date) {
Persion* p = (Persion*)date;
printf("name : %s Age: %d\n",p->name,p->age);
}
int main(void) {
LinkList* list = Init_LinkList();
Persion p1, p2, p3, p4, p5;
strcpy(p1.name, "p1");
strcpy(p2.name, "p2");
strcpy(p3.name, "p3");
strcpy(p4.name, "p4");
strcpy(p5.name, "p5");
p1.age = 1;
p2.age = 2;
p3.age = 3;
p4.age = 4;
p5.age = 5;
//将节点插入链表
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, MyPrint);
//释放链表内存
free(list);
return 0;
}
