企业链表测试

测试代码

#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;
}

//初始化链表

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--;
}

//查找


```cpp
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;
}
//返回链表大小

```cpp
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);
}

在这里插入图片描述

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值