链表实现选择法排序
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
struct node {
char data;
struct node *link;
};
void select(node *head);
void select(node *head)
{
node *p,*q,*r,*s;
p=head;
while(p->link!=NULL)
{
q=p->link;
r=p;
while(q->link!=NULL)
{
if (q->link->data < r->link->data)
r=q;
q=q->link;
}
if (r!=p)
{
s=r->link;
r->link=s->link;
s->link=p->link;
p->link=s;
}
p=p->link;
}
}
int main()
{
int n,i;
cin>>n;
node* head=new node;
node* p=new node;
node* q;
head->link=p;
head->data=0;
for(i=0;i<n;i++)
{
cin>>p->data;
if(i!=n-1)
{
q=new node;
p->link=q;
p=p->link;
}
else p->link=NULL;
}
select(head);
p=head;
while(p->link!=NULL)
{
cout<<p->link->data<<" ";
p=p->link;
}
return 0;
}