20230718

Linklist change_pos(int pos,datatype e,Linklist L);
int count(Linklist L);
-----------------------------------------------------------------------
//计数
int count(Linklist L)
{
	int count=0;
	while(L != NULL)
	{
		count++;
		L=L->next;
	}
	return count;
}
//任意位置修改、
Linklist change_pos(int pos,datatype e,Linklist L)
{

	int len=count(L);
	if(L==NULL || pos<1 || pos>len+1)
	{
		puts("error\n");
	}
	Linklist k = L;
	for(int i=1;i<pos;i++)
	{
		k=k->next;
	}
	//在k节点处修改数据
	k->data = e;

}
----------------------------------------------------------------
//任意位置修改
	int pos;
	printf("输入修改位置; ");
	scanf("%d",&pos);
	printf("请输入修改的值: ");
	scanf("%d",&e);
	change_pos(pos,e,L);

<---------------------------------------------------------------------------------->

int count(Linklist L);
Linklist find_pos(int pos,Linklist L);
------------------------------------------------------------
//计数
int count(Linklist L)
{
	int count=0;
	while(L != NULL)
	{
		count++;
		L=L->next;
	}
	return count;
}
//任意位置查找
Linklist find_pos(int pos,Linklist L)
{
	int num=0;
	int len=count(L);
	if(L==NULL || pos<1 || pos>len+1)
	{
		printf("error\n");
		return L;
	}
	Linklist c = L;
	for(int i=1;i<pos;i++)
	{
		c=c->next;
	}
	//在c节点处查找
	num = c->data;
	printf("该查找位置 %d 的值为%d\n",pos,num);

}
-----------------------------------------------------------
//任意位置查找
	int pos;
	printf("输入要查找的位置: ");
	scanf("%d",&pos);
	find_pos(pos,L);

<---------------------------------------------------------------------------------->

请输入链表个数: 6
请输入插入的第1个值: 11
请输入插入的第2个值: 22
请输入插入的第3个值: 3
请输入插入的第4个值: 44
请输入插入的第5个值: 55
请输入插入的第6个值: 66
输入要查找的位置: 4
该查找位置 4 的值为44
------------------
11  22  3  44  55  66  
------------------
ubuntu@ubuntu:0731$ gcc b1.c head.h test.c
ubuntu@ubuntu:0731$ ./a.out
请输入链表个数: 6
请输入插入的第1个值: 11
请输入插入的第2个值: 22
请输入插入的第3个值: 33
请输入插入的第4个值: 44
请输入插入的第5个值: 55
请输入插入的第6个值: 66
输入修改位置; 4
请输入修改的值: 29
----------------------------------
11    22    33    29    55    66    
----------------------------------

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值