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
----------------------------------