8.3作业

思维导图

	//调用查找函数
	list_search_value(S,100);

	//调用排序函数
	list_sort(S,0);

	//调用求最值函数
	list_mvalue(S,0);

	//调用反转函数
	list_reverse(S);
	return 0;

//按值进行查找元素
int list_search_value(seqListPtr S, datatype e)
{
	//判断逻辑
	if (NULL == S || list_empty(S))
	{
		printf("查找失败\n");
		return 0;
	}

	//开始查找
	//设置一个flag
	int flag = 0;
	for (int i = 0; i < S->len; i++)
	{
		if(S->data[i] == e)
		{
			flag = 1;   //找到了
			printf("第%d个值是%d\n",i+1, e);
		}
	}
	if(flag == 0)
	{
		printf("没有找到");
		return -1;
	}
}

//将顺序表排序(选择排序)
void list_sort(seqListPtr S, int flag)  //1升序,0降序
{
	//判断逻辑
	if (NULL == S || list_empty(S))
	{
		printf("查找失败\n");
		return;
	}
	
	//开始排序
	int index = 0;
	datatype temp;
	if (flag == 1)   //升序
	{
		for (int i = 1; i < S->len; i++)
		{
			index = i-1;
			for (int j = i-1; j < S->len; j++)
			{
				if (S->data[j] < S->data[index])
				{
					index = j;
				}
			}
			if(index!=i-1)
			{
				temp = S->data[index];
				S->data[index] = S->data[i-1];
				S->data[i-1] = temp;
			}
		}
	}
	else if(flag == 0)  //降序
	{	
		for (int i = 1; i < S->len; i++)
		{
			index = i-1;
			for (int j = i-1; j < S->len; j++)
			{
				if (S->data[j] > S->data[index])
				{
					index = j;
				}
			}
			if(index!=i-1)
			{
				temp = S->data[index];
				S->data[index] = S->data[i-1];
				S->data[i-1] = temp;
			}
		}
	}
}

//求最值操作
datatype list_mvalue(seqListPtr S,int flag) //0为最小值,1为最大值
{
	datatype temp;
	datatype index = S->data[0];
	if (flag == 1)         //求最大值
	{
		for (int i = 0; i < S->len; i++)
		{
			if (S->data[i]>index)
			{
				index = S->data[i];
			}
		}
		printf("最大值为%d\n",index);
	}
	else                  //求最小值
	{
		for (int i = 0; i < S->len; i++)
		{
			if (S->data[i]<index)
			{
				index = S->data[i];
			}
		}
		printf("最小值为%d\n",index);
	}
}

//顺序表反转
void list_reverse(seqListPtr S)
{
	datatype temp;
	for (int i = 0; i < (S->len)/2; i++)
	{
		temp = S->data[i];
		S->data[i] = S->data[S->len-1-i];
		S->data[S->len-1-i] = temp;
	}
	printf("反转之后的顺序为:");
	for (int i = 0; i < S->len; i++)
	{
		printf("%d ", S->data[i]);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值