#include "stdio.h"
#include "stdlib.h"
typedef struct linknode
{
int data;
struct linknode *next;
}linklist;
int create_linklistT(linklist *&L,int a[],int n)
{
int i;
linklist *r,*p;
for(i=0;i<n;i++)
{
p=(linklist *)malloc(sizeof(linklist));
p->data=a[i];
if(L==NULL)
{
L=p;r=L;
}
else
{
r->next=p;
r=p;
}
}
r->next=NULL;
}
int show_linklist(linklist *L)
{
linklist *p;
p=L;
while(p!=NULL)
{
printf("%2d ",p->data);
p=p->next;
}
printf("\n");
}
int insert_sort_link(linklist *&L)
{
linklist *p,*q,*pre,*r;
p=L->next;L->next=NULL;
while(p!=NULL)
{ r=p->next;
if(p->data < L->data)
{
p->next=L;L=p;
}
else
{
pre=L,q=L->next;
while(q!=NULL && q->data <p->data)
{
pre=q;q=q->next;
}
p->next = pre->next;
pre->next=p;
}
p=r;
}
}
int select_sort_link(linklist *&L)
{
linklist *p,*q,*r,*minp,*minpre,*pre;
p=L;L=NULL;
while(p->next!=NULL)
{
minp=p;pre=p;q=p;
while(q!=NULL)
{
if(q->data <minp->data)
{
minp=q,minpre=pre;
}
pre=q;q=q->next;
}
if(L==NULL)
{
L=minp;r=minp;
}
else
{
r->next=minp;
r=minp;
}
if(minp==p)
{
p=p->next;
}
else
{
minpre->next=minp->next;
}
}
r->next=NULL;
}
int select_sort_link1(linklist *&L)
{
linklist *p,*q,*minq;int temp;
p=L;
while(p->next!=NULL)
{
q=p;minq=q;
while(q!=NULL)
{
if(q->data < minq->data)
minq=q;
q=q->next;
}
if(minq!=p)
{
temp=minq->data;
minq->data=p->data;
p->data=temp;
}
p=p->next;
}
}
int main()
{ int a[10]={11,1,15,3,19,2,4,16,8,5};
int n=10;
linklist *L;
create_linklistT(L,a,n);
show_linklist(L);
select_sort_link1(L);
show_linklist(L);
}