⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 linklist.txt

📁 链表(包含) 查询
💻 TXT
字号:
#include"stdafx.h"
#include"stdio.h"
#include"malloc.h" 
typedef int datatype;
typedef struct node//链表的结构体定义
{
	int data1;
	int data2;
	int data3;
	int data4;
	int data5;

	struct node *next;
}LNode,*Linklist;
/*************************************************************   
	*功能: 初始化表
	*参数:  无
	*返回值: 头指针
*************************************************************/
Linklist create_linkist()
{
	Linklist l;
	l=(Linklist)malloc(sizeof(LNode));
	l->next=NULL;
	return l;
}


/*************************************************************   
	*功能: 添加数据
	*参数:  无
	*返回值: 无
	*说明:当输入0时停止添加数据
*************************************************************/

Linklist add_linkist(Linklist l,int flog1,int flog2,int flog3,int flog4,int flog5)
{
	Linklist r,p;	
	r=l;
//	r=l->next;
	while(r->next!=NULL)
	{
		r=r->next ;
	}

	p=(Linklist)malloc(sizeof(LNode));
	p->data1 =flog1;
	p->data2 =flog2;
	p->data3 =flog2;
	p->data4 =flog1;
	p->data5 =flog2;

	r->next=p;
	r=p;
	r->next=NULL;
	return l;
}

/*************************************************************   
	*功能: 打印链表
	*参数:  Linklist l
	*返回值: 无
*************************************************************/
void Output(Linklist l)
{
	Linklist p;
	p=l->next;
	printf("\n当前表为:\n");
	while(p)
	{
		printf("%d\td%\td%\td%\t%d\n",p->data1,p->data2 ,p->data3,p->data4,p->data5);
		p=p->next;
	}

}
/*************************************************************   
	*功能: 求链表长度
	*参数:  Linklist l
	*返回值: 表长i
*************************************************************/
int Linklist_long(Linklist l)
{
	Linklist p;
	int i=0;
	p=l->next;
	while(p)
	{
		i++;
		p=p->next ;
	}
	return i;
}

/*************************************************************   
	*功能: 按值查找
	*参数:  Linklist l,int x
	*返回值: 查找失败返回-1,成功查找返回位置i
*************************************************************/

int Linklist_location(Linklist l,int x1)
{
	Linklist p;
	int i=0;
	p=l->next;
	while(p)
	{		
		if(p->data1 ==x1)
			return i+1;
		p=p->next ;
		i++;
	}
	return -1;

}

/*************************************************************   
	*功能: 在第i个位置插入x
	*参数:  Linklist l,int x,int i
	*返回值: 插入失败返回0,成功返回1
*************************************************************/
int Linklist_insert(Linklist l,int x1,int x2,int x3,int x4,int x5,int i)
{
	Linklist p,s;
	s=(Linklist)malloc(sizeof(LNode));
	p=l;			
	for(int j=0;j<i-1;j++)
	{		
		if(p==NULL)
			return 0;
		p=p->next;
	}
	s->data1 =x1;
	s->data2 =x2;
	s->data3 =x3;
	s->data4 =x4;
	s->data5 =x5;
	s->next=p->next ;
	p->next =s ;
	return 1;
}

/*************************************************************   
	*功能: 删除第i个元素
	*参数:  Linklist l,int i
	*返回值: 插入失败返回0,成功返回1
*************************************************************/
int Linklist_delete(Linklist l,int i)
{
	Linklist p;
	p=l;
	for(int j=0;j<i-1;j++)
	{		
		if(p==NULL)
			return 0;
		p=p->next;
	}	
	p->next =p->next->next;	
	return 1;
}

void main()
{
	LNode *l;//定义结构体变量l
	int x1=0,x2=0,x3=0,x4=0,x5=0;
	l=create_linkist();//初始化表

	int flog1=0,flog2=0,flog3=0,flog4=0,flog5=0;
	printf("输入要添加的接点数:");
	scanf("%d%d%d%d%d",&flog1,&flog2,&flog3,&flog4,&flog5);
	while(flog1)
	{	
		l=add_linkist(l, flog1,flog2,flog3,flog4,flog5); //插入书元素
		printf("输入要添加的接点数:");
		scanf("%d%d",&flog1,&flog2,&flog3,&flog4,&flog5);
	}


	Output(l);//打印表
	printf("\n");

	int i=Linklist_long(l);//求表长
	printf("表长为:%d\n",i);

	printf("请输入要查找的数:");//按值查找
		scanf("%d",& x1);
	int j=Linklist_location(l,x1);
	if(j==-1)
		printf("查无此数!\n");
	else 
		printf("该数位置为:%d\n",j);

	printf("请输入要插入的位置和数:\n");//第i个位置插入x元素
	scanf("%d%d%d%d%d%d",& i,&x1,& x2,& x3,& x4,& x5  );
	int k=Linklist_insert(l,x1,x2,x3,x4,x5,i);
	if(k==1)
		printf("插入成功\n");
	else 
		printf("插入失败\n");
	Output(l);
	printf("\n");

	
  	printf("请输入要删除数的位置:\n");//删除元素
	scanf("%d",& i);
	int z=Linklist_delete(l,i);
	if(z==1)
		printf("删除成功\n");
	else 
		printf("删除失败\n!");
 	Output(l);
 	printf("\n");
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -