1、链表四个小函数
1、按位置进行修改
int list_updata_pos(LinkListPtr L,int pos,datatype e)
{
if(NULL==L||list_empty(L)||pos<1||pos>L->len)
{
printf("修改失败\n");
return 0;
}
LinkListPtr p=list_search_pos(L,pos);
p->data=e;
printf("修改成功\n");
return 1;
}
2、按值进行修改
int list_updata_value(LinkListPtr L,datatype old_e,datatype new_e)
{
if(NULL==L||list_empty(L)||old_e==new_e)
{
printf("修改失败\n");
return 0;
}
int index=-1;
if((index=list_search_value(L,old_e))>=0)
{
list_updata_pos(L,index,new_e);
}
printf("修改成功\n");
return 1;
}
3、链表排序
void list_sort(LinkListPtr L)
{
if(NULL==L||list_empty(L))
{
printf("排序失败\n");
return ;
}
datatype e;
LinkListPtr p;
for(int i=1;i<L->len;i++)
{
for(int j=1;j<L->len;j++)
{
p=list_search_pos(L,j);
if(p->data>p->next->data)
{
e=p->data;
p->data=p->next->data;
p->next->data=e;
}
}
}
printf("排序成功\n");
return ;
}
4、递归实现链表反转