企业链表测试

企业链表测试

#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);
}
上一篇:Source of Randomness


下一篇:leecode 题目977 有序数组的平方(python)