//按位置进行修改
int list_update_pos(LinklistPtr L,int pos,datatype e)
{
//判断逻辑
if(L==NULL||list_empty(L)||pos<0||L->len<=pos)
{
printf("修改失败\n");
return -1;
}
//更新逻辑
LinklistPtr p=L->next;
for(int i=0;i<pos;i++)
{
p=p->next;
}
p->data=e;
printf("更新成功\n");
return 0;
}
//按值进行修改
int list_update_value(LinklistPtr L,datatype old_e,datatype new_e)
{
if(L==NULL||list_empty||new_e==old_e)
{
printf("修改失败\n");
return -1;
}
//可以进行修改了
int i=-1;
while((i=list_search_value(L,old_e))>=0)
{
//调用按位置进行修改函数
list_update_pos(L,i,new_e);
}
printf("按值修改成功\n");
return 0;
}
//单向链表排序
void list_sort(LinklistPtr L,int flag)
{
if(NULL==L||list_empty(L))
{
printf("链表排序失败\n");
}
//可以进行排序了
datatype temp;
LinklistPtr p=L->next;
while(p->next!=NULL)
{
LinklistPtr q=p->next;
//降序
if(flag==0&&p->data<q->data)
{
temp=p->data;
p->data=q->data;
q->data=temp;
}
//降序
if(flag==1&&p->data>q->data)
{
temp=p->data;
p->data=q->data;
q->data=temp;
}
p=p->next;
}
if(flag==0)
{
printf("降序完成\n");
}
else if(flag==1)
{
printf("升序完成\n");
}
}
