单链表实现递增排序
#include<iostream>
#include<malloc.h>
# define size 50
using namespace std;
typedef struct link
{
int data;
link *next;
}linklist;
void creat(linklist *&p)
{
p=(linklist *)malloc(sizeof(linklist));
p->next=NULL;
}
void store(linklist *&p,int n,int a[])
{
linklist *s,*l;
s=p;
for(int i=0;i<n;i++)
{
l=(linklist *)malloc(sizeof(linklist));
l->data=a[i];
l->next=NULL;
s->next=l;
s=l;
}
}
void Sort(linklist *&p)
{
linklist *s,*l;
s=p->next;
l=s->next;
while(s!=NULL)
{
while(l!=NULL)
{
if(s->data>l->data)
{
int b;
b=s->data;
s->data=l->data;
l->data=b;
}
l=l->next;
}
s=s->next;
if(s->next==NULL) break;
l=s->next;
}
}
void Cout(linklist *&p)
{
linklist *s=p->next;
while(s!=NULL)
{
cout << s->data << ' ';
s=s->next;
}
}
void Free(linklist *&p)
{
linklist *s,*l;
s=p;
l=p->next;
while(l!=NULL)
{
free(s);
s=l;
l=l->next;
}
free(s);
}
int main()
{
int n,a[size];
cin >> n;
for(int i=0;i<n;i++)
cin >> a[i];
linklist *p;
creat(p);
store(p,n,a);
Sort(p);
Cout(p);
free(p);
return 0;
}