7.8作业

一、思维导图

二、
1】按值修改
2】按值查找,返回当前节点的地址 (先不考虑重复,如果有重复,返回第一个)
3】反转
4】销毁链表

//按值修改
int value_change(linklistptr H,datatype e,int value)
{
	if(H==NULL||empty(H))
	{
		printf("修改失败\n");
		return 0;
	}
	linklistptr p=H;
	for(int i=0;i<H->len;i++)
	{
		p=p->next;
		if(p->data==e)
			p->data=value;
	}
	return 1;
}
//按值查找
linklistptr value_find(linklistptr H,datatype e)
{
	if(H==NULL||empty(H))
	{
		printf("查找失败\n");
		return 0;
	}
	linklistptr p=H;
	int flag=0;
	for(int i=0;i<H->len;i++)
	{
		p=p->next;
		if(p->data==e)
		{
			flag=1;
			return p;
		}
	}
	if(flag==0)
		printf("查无此数据\n");
}
//链表逆置
int inversion(linklistptr H)
{
	if(H==NULL||empty(H))
	{
		printf("逆置失败\n");
		return 0;
	}
	linklistptr p=H->next->next;
	H->next->next=NULL;
	linklistptr q;
	while(p!=NULL)
	{
		q=p->next;
		p->next=H->next;
		H->next=p;
		p=q;
	}
}
//销毁链表
void free_link(linklistptr *H)
{
	if(*H==NULL)
	{
		printf("销毁失败\n");
		return;
	}
	free(*H);
	*H=NULL;
}

(1) 解题思路: 重载函数是指在同一作用域内,函数名相同但参数列表不同的多个函数。本题要求定义一组重载函数,分别实现int、float、double型数据的相加功能。因此,我们需要定义三个函数,分别接收int、float、double类型的数组作为参数,实现数组元素的相加,并返回相加结果。 (2) 运行结果: 输入数组元素: 1 2 3 4.5 5.5 6.5 7.8 8.8 9.8 int数组相加结果:6 float数组相加结果:16.5 double数组相加结果:26.4 (3) 代码: #include <iostream> using namespace std; int add(int arr[], int len) { int sum = ; for (int i = ; i < len; i++) { sum += arr[i]; } return sum; } float add(float arr[], int len) { float sum = ; for (int i = ; i < len; i++) { sum += arr[i]; } return sum; } double add(double arr[], int len) { double sum = ; for (int i = ; i < len; i++) { sum += arr[i]; } return sum; } int main() { int arr1[] = {1, 2, 3}; float arr2[] = {4.5, 5.5, 6.5}; double arr3[] = {7.8, 8.8, 9.8}; int len = sizeof(arr1) / sizeof(arr1[]); cout << "int数组相加结果:" << add(arr1, len) << endl; cout << "float数组相加结果:" << add(arr2, len) << endl; cout << "double数组相加结果:" << add(arr3, len) << endl; return ; } (4) 分析总结: 本题要求定义一组重载函数,分别实现int、float、double型数据的相加功能。通过定义三个函数,分别接收int、float、double类型的数组作为参数,实现数组元素的相加,并返回相加结果。在主函数中,分别定义三个数组,调用三个函数,输出相加结果。通过本题,我们掌握了重载函数的定义和使用方法。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值