1.单向链表简单排序
主函数:
//选择排序
choose(L);
Output(L);
被调函数:
//选择排序
void choose(Linklist L)
{ if(L==NULL || L->next==NULL)
return;
int len=len_link(L);
Linklist p,q;
datatype max;
for(int i=0;i<len;i++)
{ q=L,p=L;
max=L->data;
int j;
for(j=1;j<len-i;j++)
{ q=q->next;
if((q->data) > max)
{ max=q->data;p=q;}
}
if(p!=q)
{ datatype t=p->data;p->data=q->data;q->data=t;}
}
}
2.单向链表按值插入
主函数:
//按元素插入
datatype key;
printf("enter insert_key:");
scanf("%d",&key);
printf("enter insert_key ele:");
scanf("%d",&ele);
insert_key(key,ele,L);
Output(L);
被调函数:
//按元素插入
void insert_key(datatype key,datatype ele,Linklist L)
{ int pos=search_key(key,L);
insert_pos(pos,ele,L);
}
//任意位置查找
int search_pos(int pos,Linklist L)
{ int len=len_link(L);
if(L==NULL || pos<1 || pos>len)
{ puts("search_pos error");
return -1;}
Linklist p=L;
for(int i=1;i<pos;i++)
p=p->next;
printf("查找到的值为:%d\n",p->data);
return 0;
}
//任意位置插入
Linklist insert_pos(int pos,datatype ele,Linklist L)
{ int len=len_link(L);
if(L==NULL || pos<1 || pos>len+1)
{ puts("insert_pos error");
return L;}
Linklist s=Create();
s->data=ele;
if(pos==1)
{ s->next=L;
L=s;
return L;}
Linklist p=L;
for(int i=1;i<pos-1;i++)
p=p->next;
s->next=p->next;
p->next=s;
return L;
}
3.单向链表按值修改
主函数:
//按元素修改
printf("enter update_key:");
scanf("%d",&key);
printf("enter update_key ele:");
scanf("%d",&ele);
update_key(key,ele,L);
Output(L);
被调函数:
//按元素修改
void update_key(datatype key,datatype ele,Linklist L)
{ int pos=search_key(key,L);
update_pos(pos,ele,L);
}
//任意位置修改
Linklist update_pos(int pos,datatype ele,Linklist L)
{ int len=len_link(L);
if(L==NULL || pos<1 || pos>len)
{ puts("update_pos error");
return L;}
Linklist p=L;
for(int i=1;i<pos;i++)
p=p->next;
p->data=ele;
return L;
}
//任意位置查找
int search_pos(int pos,Linklist L)
{ int len=len_link(L);
if(L==NULL || pos<1 || pos>len)
{ puts("search_pos error");
return -1;}
Linklist p=L;
for(int i=1;i<pos;i++)
p=p->next;
printf("查找到的值为:%d\n",p->data);
return 0;
}
代码运行结果:

思维导图:

文章介绍了如何对单向链表进行简单排序,使用选择排序算法。此外,还展示了如何按值在链表中插入新元素以及按值修改链表中的元素。主函数调用相应被调函数完成这些操作,并通过Output函数显示结果。

被折叠的 条评论
为什么被折叠?



