(1)试以单链表为存储结构,实现简单选择排序算法。
#include <stdio.h>
#include <stdlib.h>
typedef int status;
typedef int elemtype;
typedef struct lnode{
elemtype data;
struct lnode *link;
}lnode,*linknode;
typedef struct{
linknode head,rear;
int len;}linklist;
void init_linklist(linklist &l)
{l.head=l.rear=(linknode)malloc(sizeof(lnode));
l.len=0;
l.head->link=NULL;}
void create(linklist &l)
{linknode p;elemtype e;
init_linklist(l);
scanf("%d",&e);
while(e!=-9999)
{p=(linknode)malloc(sizeof(lnode));
p->data=e;p->link=l.head->link;
l.head->link=p;
if(l.head==l.rear)l.rear=p;
l.len++;
scanf("%d",&e);}
}
void putdata(linklist l)
{linknode p=l.head->link;
printf("\n");
while(p)
{printf("%d,",p->data);p=p->link;}
}
void sort(linklist &l){
int i=0;
linknode p,q,ins,min,temp;
ins=l.head;
while(ins->link){
p=ins->link;
min=p;
while(p){
if(min->data>p->data){temp=q;min=p;i=1;}
q=p;
p=p->link;
}
if(i==1){
i=0;
temp->link=min->link;
min->link=ins->link;
ins->link=min;
}
ins=min;
}
}
int main(){
linklist L;
printf("请输入待排序的数字,以-9999结束:");
create(L);
printf("\n");
sort(L);
putdata(L);
}