1.单向链表按位置修改
2.单向链表按元素删除
3.单向链表按元素修改
4.单向链表在给定元素前面插入
5.单向链表的排序
6.单向链表空间释放
//按位置修改
int update_data(linklist L, int pos, datatype e)
{
if(L == NULL || L->next == NULL || pos < 1 || pos >L->len)
{
return -1;
}
linklist p = L;
for(int i=0;i<pos;i++)
{
p = p->next;
}
p->data = e;
return 0;
}
//按元素修改
int update_data(linklist L,datatype e,datatype k)
{
//先找位置,根据位置修改
int pos = search_data(L,e);
if(pos == -1)
{
return -1;
}
update_data(L,pos,ley);
return 0;
}
//按元素删除
int delete_data(linklist L,datatype e)
{
//查找该元素所在位置
int pos = search_data(L,e);
if(pos == -1)
{
return -1;
}
//按位置删除
delete_pos(L,pos);
return 0;
}
//给定元素前插入
int insert_data(linklist L,datatype f,datatype e)
{
//查找该元素位置
int pos = search_data(L,f);
if(pos == -1)
{
return -1;
}
insert_pos(L,pos,e);
return 0;
}
//排序
void sort(linklist L)
{
if(L == NULL ||L->next == NULL)
{
printf("排序失败\n");
return;
}
datatype temp;
for(int i=0;i< L->len-1;i++)
{
linklist p = L->next;
int count = 0;
for(int j=0;j< L->len-1-i;j++)
{
if(p->data > p->next->data)
{
temp = p->data;
p->data = p->next->data;
p->next->data = temp;
count++;
}
p = p->next;
}
if(count == 0)
{
break;
}
}
}
linklist free_space(linklist L)//空间释放
{
if(L == NULL)
{
return NULL;
}
//循环释放
linklist p = L->next;
while(p != NULL)
{
linklist q = p;
p = p->next;
free(q);
q = NULL;
}
free(L);
L = NULL;
return NULL;
}