#include <stdio.h>
#include <stdlib.h>
#include "LinkList.h"
#include <conio.h>
#include <string.h>
typedef struct PERSON
{
LinkNode *node;
char name[64];
int age;
}Person;
void MyPrint(LinkNode* data)
{
Person *p=(Person*)data;
printf("Name:%s,age:%d\n",p->name,p->age);
}
int MyCompare(LinkNode* node1,LinkNode* node2)
{
Person *p1=(Person*)node1;
Person *p2=(Person*)node2;
if(strcmp(p1->name,p2->name)==0&&p1->age==p2->age)
{
printf("Name:%s,age:%d\n",p1->name,p1->age);
return 0;
}
return -1;
}
void test01()
{
//创建链表
LinkList *list=Init_LinkList();
//创建数据
Person p1,p2,p3,p4,p5;
strcpy(p1.name,"ggj");
strcpy(p2.name,"zqx");
strcpy(p3.name,"wjy");
strcpy(p4.name,"lx");
strcpy(p5.name,"wjy");
p1.age=22;
p2.age=23;
p3.age=21;
p4.age=21;
p5.age=21;
//将结点插入链表
Insert_LinkList(list,0,(LinkNode*)&p1);
Insert_LinkList(list,0,(LinkNode*)&p2);
Insert_LinkList(list,0,(LinkNode*)&p3);
Insert_LinkList(list,0,(LinkNode*)&p4);
int size=Size_LinkList(list);
printf("链表长度为%d\n",size);
Print_LinkList(list,MyPrint);
//删除节点
printf("删除后\n");
printf("----------\n");
Remove_LinkList(list,3);
Print_LinkList(list,MyPrint);
printf("查找结果\n");
printf("----------\n");
//查找节点
int pos=Find_LinkList(list,(LinkNode*)&p5,MyCompare);
printf("位置为%d\n",pos);
PressSpace_LinkList(list);
system("pause");
}
int main()
{
test01();
getch();
return 0;
}
`
```cpp
``
//初始化链表
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 *data)
{
if(list==NULL)
{
return;
}
if(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)
{
if(list==NULL)
{
return;
}
if(pos<0||pos>list->size)
{
return;
}
//辅助指针变量
LinkNode *pCurrent=&(list->head);
for(int i=0;i<pos;i++)
{
pCurrent=pCurrent->next;
}
//删除节点
pCurrent->next=pCurrent->next->next;
list->size--;
}
//查找
int Find_LinkList(LinkList *list,LinkNode *data,COMPAREITEMSTRUCT compare)
{
if(list==NULL)
{
return 0;
}
if(data==NULL)
{
return 0;
}
int index=0;
int flag=-1;
//辅助指针变量
LinkNode *pCurrent=(list->head.next);
while(pCurrent!=NULL)
{
if(compare(pCurrent,data)==0)
{
flag=index;
break;
}
pCurrent=pCurrent->next;
index++;
}
return flag;
}
//返回链表大小
int Size_LinkList(LinkList *list)
{
return list->size;
}
//打印
void Print_LinkList(LinkList *list,PRINTNODE print)
{
if(list==NULL)
{
return;
}
//辅助指针
LinkNode *pCurrent=list->head.next;
while(pCurrent!=NULL)
{
print(pCurrent);
pCurrent=pCurrent->next;
}
}
//释放链表内存
void PressSpace_LinkList(LinkList *list)
{
if(list==NULL)
{
return;
}
free(list);
}
企业链表测试
最新推荐文章于 2024-08-19 23:56:23 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)