单向链表按位置修改
//按位置修改
int update_pos(linklist L,int pos,datatype e)
{
if(L==NULL||pos<1||pos>L->len)
{
printf("修改失败:\n");
return -1;
}
linklist p=L;
for(int i=0;i<pos;i++)
{
p=p->next;
}
p->data=e;
return 0;
}
单向链表按元素删除
//单向链表按元素删除
int delete_data(linklist L,datatype e)
{
if(L==NULL)
{
return -1;
}
linklist p=L;
for(int i=0;i<L->len;i++)
{
p=p->next;
if(p->data==e)
{
delete_pos(L,i+1);
return 0;
}
}
return -1;
}
单向链表按位元素修改
//单向链表按位元素修改
int update_data(linklist L,datatype key,datatype e)
{
if(L==NULL)
{
printf("修改失败:\n");
return -1;
}
linklist p=L;
int ret=search_data(L,key);
update_pos(L,ret,e);
return 0;
}
单向链表在给定元素前面插入
int insert_data(linklist L,datatype key,datatype e)
{
if(L==NULL)
{
printf("插入失败:\n");
return -1;
}
linklist p=L;
int ret= search_data(L,key);
insert_pos(L,ret,e);
return 0;
}
//单项链表的排序
单向链表的排序
void linklist_sort(linklist L)
{
if(L==NULL)
{
printf("排序失败:");
return;
}
for(int i=0;i<L->len-1;i++)
{
linklist p=L;
for(int j=0;j<L->len-i-1;j++)
{
if(p->next->data>p->next->next->data)
{
linklist q=p->next;
linklist r=q->next;
q->next=r->next;
r->next=q;
p->next=r;
}
p=p->next;
}
}
}
单向链表空间释放
linklist Linklistfree_space(linklist L)
{
if(L==NULL)
{
return NULL;
}
int n=L->len;
for(int i=0;i<n;i++)
{
delete_head(L);
}
free(L);
L=NULL;
return L;
}