试以单链表为存储结构实现简单选择排序的算法
数据结构求解
答案:1 悬赏:30 手机版
解决时间 2021-04-22 07:25
- 提问者网友:蓝琪梦莎
- 2021-04-21 13:19
最佳答案
- 五星知识达人网友:空山清雨
- 2021-04-21 14:04
#include<stdio.h>
#include<stdlib.h>
typedef struct data
{
int data;
struct data *next;
}*Linklist,Lnode;
void Inlist(Linklist *L)
{
(*L)=(Linklist)malloc(sizeof(Lnode));
(*L)->next=NULL;
}
void Creat(Linklist L)
{
Lnode *r,*s;
int x;
r=L;
while(1)
{
scanf("%d",&x);
if(x>0)
{
s=(Linklist)malloc(sizeof(Lnode));
s->data=x;
r->next=s;
r=s;
}
else
{
r->next=NULL;
break;
}
}
}
void sortlist(Linklist L)
{
Lnode *p,*q,*k,t;
p=L->next;
while(p->next)
{
k=p;
q=p->next;
while(q)
{
if(k->data>q->data)
k=q;
q=q->next;
}
if(k!=p)
{
t=*p;
*p=*k;
*k=t;
t.next=p->next;
p->next=k->next;
k->next=t.next;
}
p=p->next;
}
}
void Output(Linklist L)
{
Lnode *p;
p=L->next;
while(p)
{
printf("%-3d",p->data);
p=p->next;
}
printf("\n");
}
main()
{
Linklist L;
Inlist(&L);
Creat(L);
Output(L);
sortlist(L);
printf("排序:");
Output(L);
}
#include<stdlib.h>
typedef struct data
{
int data;
struct data *next;
}*Linklist,Lnode;
void Inlist(Linklist *L)
{
(*L)=(Linklist)malloc(sizeof(Lnode));
(*L)->next=NULL;
}
void Creat(Linklist L)
{
Lnode *r,*s;
int x;
r=L;
while(1)
{
scanf("%d",&x);
if(x>0)
{
s=(Linklist)malloc(sizeof(Lnode));
s->data=x;
r->next=s;
r=s;
}
else
{
r->next=NULL;
break;
}
}
}
void sortlist(Linklist L)
{
Lnode *p,*q,*k,t;
p=L->next;
while(p->next)
{
k=p;
q=p->next;
while(q)
{
if(k->data>q->data)
k=q;
q=q->next;
}
if(k!=p)
{
t=*p;
*p=*k;
*k=t;
t.next=p->next;
p->next=k->next;
k->next=t.next;
}
p=p->next;
}
}
void Output(Linklist L)
{
Lnode *p;
p=L->next;
while(p)
{
printf("%-3d",p->data);
p=p->next;
}
printf("\n");
}
main()
{
Linklist L;
Inlist(&L);
Creat(L);
Output(L);
sortlist(L);
printf("排序:");
Output(L);
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯