1、完成单链表的按值进行修改函数。2、完成单向链表的翻转:void list_reverse(LinkList *L); 例如:原链表元素为:ABCD 翻转后:DCBA

作业需要:

完成单链表的按值修改函数

//按值查找函数
int list_search_value(DoubleLink *L,datatype e){
	//判断逻辑
	if(NULL == L){
		puts("查找失败");
		return -1;
	}
	//查找逻辑
	DoubleLink *q = L->next;  //从第一个结点出发
	for(int i=1;i<=L->len;i++){
		if(q->data == e){
			puts("查找成功");
			return i;
		}
		q = q->next;  //继续判断下一个结点
	}
	return 0;  //说明没找到
	puts("未找到");
}

//按位置修改函数
int list_update_pos(DoubleLink *L,int pos,datatype new_e){
	//判断逻辑
	if(NULL == L || pos<1 || pos>L->len){
		puts("修改失败");
		return 0;
	}
	//查找到要修改的结点
	DoubleLink *p = find_node(L,pos);
	//更新数据
	p->data = new_e;
	puts("修改成功");
	return 1;
}

//按值修改函数
int list_update_value(DoubleLink *L,datatype old_value,datatype new_value){
	int ret = list_search_value(L,old_value);  //先找到值在链表中的位置
	list_update_pos(L,ret,new_value);  //根据值在链表中的位置进行修改
}

完成单向链表的翻转:

//链表翻转
void list_reverse(Linklist *L){
	//判断逻辑
	if(NULL == L || L->next == NULL){
		puts("翻转失败");
		return;
	}
	//翻转逻辑
	Linklist *p = list_create();
	while(L->next != NULL){
		Linklist *q = L->next;
		L->next = q->next;
		q->next = p->next;
		p->next = q;
	}
	L->next = p->next;
	free(p);
	p = NULL;
}

终端执行结果:

完成单链表的按值修改函数

ubuntu@ubuntu:03test$ ./a.out 
创建成功
创建成功
创建成功
创建成功
创建成功
创建成功
50	40	30	20	10	
查找成功
查找成功
修改成功
50	40	30	20	1000	

完成单向链表的翻转:

ubuntu@ubuntu:02test$ gcc *.c
ubuntu@ubuntu:02test$ ./a.out 
创建成功
此时链表元素分别是:
D	C	B	A	
创建成功
此时链表元素分别是:
A	B	C	D	

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大鱼YY

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值