//按位置进行修改
int list_revise_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;
}
//按值进行修改
int list_revise_value(LinkListPtr l,datatype value,datatype e)
{
if(NULL == l || list_empty(l))
{
printf("修改失败\n");
return 0;
}
for(int i = 0; i <= l ->len; i++)
{
if(list_search_pos(l,i) -> data == e)
{
list_search_pos(l,i) -> data = value;
}
}
printf("修改成功\n");
return 1;
}
//链表的排序
void list_sort(LinkListPtr l)
{
if(NULL == l || list_empty(l))
{
printf("排序失败\n");
return;
}
LinkListPtr p = l -> next;
int i = 0;
int j = 0;
char tmp = 0;
for(i = 0; i < l -> len; i++)
{
p = l -> next;
for(j = 0; j < l -> len - 1 - i; j++)
{
if(p -> data < p -> next -> data)
{
tmp = p -> next -> data;
p -> next -> data = p ->data;
p -> data = tmp;
}
p = p -> next;
}
}
printf("排序成功\n");
}
//递归实现链表的反转
LinkListPtr list_reverses(LinkListPtr l)
{
if(NULL == l || list_empty(l))
{
printf("反转失败\n");
return;
}
if(l -> next == NULL)
{
return l;
}
LinkListPtr p = list_reverses(l -> next);
l -> next -> next = l;
l -> next = NULL;
return p;
}