数据结构 2024.1.23

1.思维导图

2.顺序表按任意元素修改

头文件:

#ifndef __HEAD_H__
#define __HEAD_H__
 
#include<stdio.h>
#include<string.h>	
#include<stdlib.h>
#define MAXSIZE 7
typedef int datatype;
enum num
{
	FALSE=-1,
	SUCCESS
};
typedef struct SQLIST
{
	//数据元素
	datatype data[MAXSIZE];
	//顺序表长度
	int len;
}sqlist;
sqlist* create();
int insert_rear(datatype element,sqlist*list);
int output(sqlist *list);
int key_element(sqlist*list,datatype key);
void cpy_index(sqlist*list,int index,datatype element1);
 
#endif

主函数:

#include"head.h"	
//顺序表按任意元素修改
int main(int argc, const char *argv[])
{
	sqlist *list=create();
	int n;
	datatype element;
	printf("please enter n:");
	scanf("%d",&n);
	for(int i=0;i<n;i++)
	{
		printf("please enter %d insert element:",i+1);
		scanf("%d",&element);
		int flag=insert_rear(element,list);
		if(flag==FALSE)
		{
			puts("NULL or FULL");
			break;
		}
	}
	datatype key,element1;
	printf("pleaseb enter key:");
	scanf("%d",&key);
	printf("please enter element1:");
	scanf("%d",&element1);
	int index=key_element(list,key);
	cpy_index(list,index,element1);
	output(list);
	return 0;
}

文本函数:

#include"head.h"
sqlist* create()
{
	sqlist *list=(sqlist*)malloc(sizeof(sqlist));
	if(NULL==list)
		return NULL;
	//对数据元素清0
	memset(list->data,0,sizeof(list->data));
	//对顺序表长度清0
	list->len=0;
	return list;
}
//判断顺序表是否为满
int full(sqlist *list)
{
	return list->len==MAXSIZE?FALSE:SUCCESS;
}
int insert_rear(datatype element,sqlist*list)
{
	//判断顺序表是否创建成功
	//判断顺序表是否为满
	if(NULL==list||full(list))
		return FALSE;
	list->data[list->len++]=element;
	return SUCCESS;
}
//判断顺序表是否为空
int empty(sqlist*list)
{
	return list->len==0?FALSE:SUCCESS;
}
int output(sqlist *list)
{
	if(NULL==list||empty(list))
		return FALSE;
	for(int i=0;i<list->len;i++)
	{
		printf("%-5d",list->data[i]);
	}
	puts("");
	return SUCCESS;
}
int key_element(sqlist*list,datatype key)
{
	//判断顺序表是否创建成功
	//判断顺序表是否为空
	if(NULL==list||empty(list))
		return FALSE;
	//循环一 一查找
	//如果key重复 则返回最后一个key下表
	int index=-1;
	for(int i=0;i<list->len;i++)
	{
		if(key==list->data[i])
		{
			index=i;
		}
	}
	return index;
}
void cpy_index(sqlist*list,int index,datatype element1)
{
	if(NULL==list||empty(list)||index<0||index>=list->len)
	{
		puts("error");
		return;
	}
	list->data[index]=element1;
}

效果显示:

3.顺序表按任意元素删除

头文件:

#ifndef __HEAD_H__
#define __HEAD_H__
 
#include<stdio.h>
#include<string.h>	
#include<stdlib.h>
#define MAXSIZE 7
typedef int datatype;
enum num
{
	FALSE=-1,
	SUCCESS
};
typedef struct SQLIST
{
	//数据元素
	datatype data[MAXSIZE];
	//顺序表长度
	int len;
}sqlist;
sqlist* create();
int insert_rear(datatype element,sqlist*list);
int output(sqlist *list);
int key_element(sqlist*list,datatype key);
void det_index(sqlist*list,int index);
 
#endif

主函数:

#include"head.h"	
//顺序表按任意元素删除
int main(int argc, const char *argv[])
{
	sqlist *list=create();
	int n;
	datatype element;
	printf("please enter n:");
	scanf("%d",&n);
	for(int i=0;i<n;i++)
	{
		printf("please enter %d insert element:",i+1);
		scanf("%d",&element);
		int flag=insert_rear(element,list);
		if(flag==FALSE)
		{
			puts("NULL or FULL");
			break;
		}
	}
	datatype key,element1;
	printf("pleaseb enter key:");
	scanf("%d",&key);
	int index=key_element(list,key);
	det_index(list,index);
	output(list);
 
 
	return 0;
}

 文本函数:

#include"head.h"
sqlist* create()
{
	sqlist *list=(sqlist*)malloc(sizeof(sqlist));
	if(NULL==list)
		return NULL;
	//对数据元素清0
	memset(list->data,0,sizeof(list->data));
	//对顺序表长度清0
	list->len=0;
	return list;
}
//判断顺序表是否为满
int full(sqlist *list)
{
	return list->len==MAXSIZE?FALSE:SUCCESS;
}
int insert_rear(datatype element,sqlist*list)
{
	//1、判断顺序表是否创建成功
	//2、判断顺序表是否为满
	if(NULL==list||full(list))
		return FALSE;
	list->data[list->len++]=element;
	return SUCCESS;
}
//判断顺序表是否为空
int empty(sqlist*list)
{
	return list->len==0?FALSE:SUCCESS;
}
int output(sqlist *list)
{
	if(NULL==list||empty(list))
		return FALSE;
	for(int i=0;i<list->len;i++)
	{
		printf("%-5d",list->data[i]);
	}
	puts("");
	return SUCCESS;
}
int key_element(sqlist*list,datatype key)
{
	//1、判断顺序表是否创建成功
	//2、判断顺序表是否为空
	if(NULL==list||empty(list))
		return FALSE;
	//3、循环一 一查找
	//如果key重复 则返回最后一个key下表
	int index=-1;
	for(int i=0;i<list->len;i++)
	{
		if(key==list->data[i])
		{
			index=i;
		}
	}
	return index;
}
void det_index(sqlist*list,int index)
{
	//1、判断顺序表是否创建成功
	//2、判断顺序表是否为空
	//3、判断下表是否合法
	if(NULL==list||empty(list)||index<0||index>list->len)
	{
		puts("error");
		return;
	}
	//4、删除
	for(int i=index+1;i<list->len;i++)
	{
		list->data[i-1]=list->data[i];
	}
	list->len--;
}

效果显示:

4.顺序表排序

头文件:

#ifndef __HEAD_H__
#define __HEAD_H__
 
#include<stdio.h>
#include<string.h>	
#include<stdlib.h>
#define MAXSIZE 7
typedef int datatype;
enum num
{
	FALSE=-1,
	SUCCESS
};
typedef struct SQLIST
{
	//数据元素
	datatype data[MAXSIZE];
	//顺序表长度
	int len;
}sqlist;
sqlist* create();
int insert_rear(datatype element,sqlist*list);
int output(sqlist *list);
int sort(sqlist*list);
 
#endif
 

 主函数:

#include"head.h"	
//顺序表排序
int main(int argc, const char *argv[])
{
	sqlist *list=create();
	int n;
	datatype element;
	printf("please enter n:");
	scanf("%d",&n);
	for(int i=0;i<n;i++)
	{
		printf("please enter %d insert element:",i+1);
		scanf("%d",&element);
		int flag=insert_rear(element,list);
		if(flag==FALSE)
		{
			puts("NULL or FULL");
			break;
		}
	}
	sort(list);
	output(list);
 
	return 0;
}

文本函数:

//文本函数
#include"head.h"
sqlist* create()
{
	sqlist *list=(sqlist*)malloc(sizeof(sqlist));
	if(NULL==list)
		return NULL;
	//对数据元素清0
	memset(list->data,0,sizeof(list->data));
	//对顺序表长度清0
	list->len=0;
	return list;
}
//判断顺序表是否为满
int full(sqlist *list)
{
	return list->len==MAXSIZE?FALSE:SUCCESS;
}
int insert_rear(datatype element,sqlist*list)
{
	//1、判断顺序表是否创建成功
	//2、判断顺序表是否为满
	if(NULL==list||full(list))
		return FALSE;
	list->data[list->len++]=element;
	return SUCCESS;
}
//判断顺序表是否为空
int empty(sqlist*list)
{
	return list->len==0?FALSE:SUCCESS;
}
int output(sqlist *list)
{
	if(NULL==list||empty(list))
		return FALSE;
	for(int i=0;i<list->len;i++)
	{
		printf("%-5d",list->data[i]);
	}
	puts("");
	return SUCCESS;
}
int sort(sqlist*list)
{
	if(NULL==list||empty(list))
		return FALSE;
	for(int i=1;i<list->len;i++)
	{
		for(int j=0;j<list->len-i;j++)
		{
			if(list->data[j]>list->data[j+1])
			{
				datatype t=list->data[j];
				list->data[j]=list->data[j+1];
				list->data[j+1]=t;
			}
		}
	}
	return SUCCESS;
}

效果显示:

5.顺序表释放空间

头文件:

#ifndef __HEAD_H__
#define __HEAD_H__
 
#include<stdio.h>
#include<string.h>	
#include<stdlib.h>
#define MAXSIZE 7
typedef int datatype;
enum num
{
	FALSE=-1,
	SUCCESS
};
typedef struct SQLIST
{
	//数据元素
	datatype data[MAXSIZE];
	//顺序表长度
	int len;
}sqlist;
sqlist* create();
int insert_rear(datatype element,sqlist*list);
int output(sqlist *list);
sqlist *free_space(sqlist*list);
 
#endif

主函数:

#include"head.h"	
//顺序表释放内存
int main(int argc, const char *argv[])
{
	sqlist *list=create();
	int n;
	datatype element;
	printf("please enter n:");
	scanf("%d",&n);
	for(int i=0;i<n;i++)
	{
		printf("please enter %d insert element:",i+1);
		scanf("%d",&element);
		int flag=insert_rear(element,list);
		if(flag==FALSE)
		{
			puts("NULL or FULL");
			break;
		}
	}
	list=free_space(list);
	output(list);
 
	return 0;
}

文本文件:

#include"head.h"
sqlist* create()
{
	sqlist *list=(sqlist*)malloc(sizeof(sqlist));
	if(NULL==list)
		return NULL;
	//对数据元素清0
	memset(list->data,0,sizeof(list->data));
	//对顺序表长度清0
	list->len=0;
	return list;
}
//判断顺序表是否为满
int full(sqlist *list)
{
	return list->len==MAXSIZE?FALSE:SUCCESS;
}
int insert_rear(datatype element,sqlist*list)
{
	//1、判断顺序表是否创建成功
	//2、判断顺序表是否为满
	if(NULL==list||full(list))
		return FALSE;
	list->data[list->len++]=element;
	return SUCCESS;
}
//判断顺序表是否为空
int empty(sqlist*list)
{
	return list->len==0?FALSE:SUCCESS;
}
int output(sqlist *list)
{
	if(NULL==list||empty(list))
		return FALSE;
	for(int i=0;i<list->len;i++)
	{
		printf("%-5d",list->data[i]);
	}
	puts("");
	return SUCCESS;
}
sqlist *free_space(sqlist*list)
{
	if(NULL==list)
		return NULL;
	free(list);
	list=NULL;
	puts("");
	return list;
}

效果显示:

  • 10
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
宠物行业数据分析 2019中国53.2%宠物主养宠产品购买渠道偏好为线上电商 从2019年中国宠物主养宠产品购买渠道偏好调查来看,线上电商占比最高,为53.2% ;其次是宠物店占比为21.2%;位列第三的是宠物医院,占比为14.2%;此外,到花鸟鱼虫 市场购买宠物产品的宠物主占比最低,仅为1.4%。  随着宠物角色向家庭成员转变,"拟人化"的宠物服务与宠物用品行业兴起,宠物行 业形成了食品宠物饲养、宠物交易、宠物食品、宠物用品、宠物医疗、宠物服务的细分 领域。宠物食品行业发展成熟,2018年,佩蒂股份企业营收达8.7亿元,同比增长37.5% 。宠物美容、宠物玩具、宠物服饰、宠物智能家居等成为风口。宠物医疗方面,宠物医 院出现连锁化趋势。截至2019年5月,瑞鹏宠物医院超400家,瑞派宠物医院超300家。艾 媒咨询分析师认为,中国宠物经济相关产业已逐渐完善,并正在兴起宠物网红、宠物主 题餐馆、宠物社交、品牌店连锁化等。 2020年宠物市场发展现状:逐年递增的"冷门宠物"市场 近年来,养宠品类呈现多样化特征,水族、爬行类等宠物更有广泛天地。2017年,在 养宠用户中,养狗家庭的比例最高,占比高达60%,其次是养猫家庭,占比接近40%。从 2018年数据来看,新晋养宠家庭的偏好更为多样化,仅46%的养宠家庭选择养狗,养猫家 庭比例也下滑至31%,相比之下,以"水族"、"爬行类"、"啮齿类"为代表的"冷门宠物"的 比例明显上升,2018年已有接近27%的养宠家庭以水族为宠物。 宠物排行榜中,宠物狗和宠物猫一直位列在第一和第二位,其次是珍珠兔、仓鼠鼠、 金鱼和乌龟等。还有一些宠物主会选择养鸟、猪、变色龙等宠物。当然,国内人最爱养 宠的种类除了狗(33.9%)、猫(20%)之外,剩下最受欢迎的四种宠物是乌龟(8.9%) 、仓鼠(10%)、鱼(15.8%)、兔子(7.1%)。这其中就包括小香猪、仓鼠、荷兰鼠、 鹦鹉、巴西龟和珍珠兔等。 一般常见的冷门宠物的种类有龙猫、兔子、松鼠、刺猬、蜥蜴等。随着国内经济的发 展,冷门宠物养殖市场发展面临巨大机遇和挑战。在市场竞争方面,冷门宠物企业数量 越来越多,市场正面临着供给与需求的不对称,冷门宠物行业有进一步洗牌的强烈要求 。 我国拥有宠物的家庭比例虽然相对于美国、西欧等国家和地区水平还较低,但大中城 市的宠物家庭比例已经接近,伴随着饲养宠物的生活方式逐渐从大中城市向其他城市普 及,我国宠物数量至少以每年15%的速度增长。 宠物猫市场规模增速快 随着我国人口老龄化,家庭人数的减少和人民生活习惯的变化,人们对于宠物的需求 量大大提升,推动我国宠物行业市场规模发展。根据亚宠展、狗民网、铃铛宠物发布的 《2019年中国宠物行业白皮书》数据,2012- 2019年我国宠物行业市场规模持续增长,2019年已达2024亿元,同比增长18.50%。 分宠物品种来看市场规模,2019年宠物猫市场规模增长19.6%达到780亿元;宠物犬市 场规模达1244亿元,同比增长17.8%;宠物数量方面,宠物犬数量较宠物猫数量多,但宠 物猫数量增速较宠物犬快,2019年宠物猫数量增长8.6%达到4412万只,宠物犬数量增长 8.2%,达5503万只。 宠物零食支出增速最快 从宠物消费结构来看,2019年宠物主粮、零食、保健食品等食品消费占宠物总体消费 的比重高达61.4%,较2018年增长9.2%,主粮为养宠人士最大养宠开支,占比达到39.4% 。从细分品类来看,2019年宠物零食支出占比增长最快,上升了8个百分点。 虽然受疫情影响,2020年国内宠物行业受到一定冲击,但宠物饲料属于刚性需求,受 到的影响较小,并且线上渠道已成为宠物饲料的最主要渠道,宠物数量的增长、渗透率 的提升以及高端化的趋势将推动我国宠物行业持续快速增长。当前,国内宠物行业的体 量较小,市场份额较低,仍有较大的提升空间。 随着我国人口老龄化,家庭人数的减少和人民生活习惯的变化,人们对于宠物的需求 量大大提升,推动我国宠物行业市场规模发展。2019年我国宠物行业市场规模已达2024 亿元,同比增长18.50%,其中宠物猫市场规模增速快,增长了19.6%,达到780亿元;从宠 物消费结构来看,宠物饲料占据主要比重,零食支出增速最快。当前国内宠物行业的体 量较小,市场份额较低,仍有较大的提升空间。 ----------------------- 宠物行业数据分析全文共4页,当前为第1页。 宠物行业数据分析全文共4页,当前为第2页。 宠物行业数据分析全文共4页,当前为第3页。 宠物行业数据分析全文共4页,当前为第4页。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值