链表选择排序
#include <iostream>
#include <malloc.h>
using namespace std;
typedef struct LNode{
int index;
struct LNode *next;
}LNode,*LinkList;
LinkList create(LinkList& L)
{
L = (LinkList)malloc(sizeof(LNode));
LNode *s,*r=L;
int x;
cin>>x;
while(x!=111){
s = (LNode*)malloc(sizeof(LNode));
s->index = x;
r->next = s;
r = s;
cin>>x;
}
r->next = NULL;
return L;
}
int lenOfList(const LinkList& L){
LNode *p=L->next;
int len=0;
while(p){
len++;
p = p->next;
}
return len;
}
LNode* GetItem(const LinkList& L,int i){
LNode* p=L->next;
int j=1;
if(i==0)
return L;
else if(i<1)
return NULL;
while(p&&j<i){
p = p->next;
j++;
}
return p;
}
void sortList(LinkList& L,int len){
int i,j,min,temp;
LNode *p=NULL,*q=NULL;
for(i=1;i<=len;i++){
min = i;
for(j=i+1;j<=len;j++)
if(GetItem(L,j)->index < GetItem(L,min)->index)
min = j;
if(min!=i){
p = GetItem(L,i);
q = GetItem(L,min);
temp = p->index;
p->index = q->index;
q->index = temp;
}
}
}
void display(const LinkList& L){
LNode* p=L->next;
while(p){
cout<<p->index<<" ";
p = p->next;
}
cout<<endl;
}
int main()
{
LinkList L;
L = create(L);
display(L);
int len = lenOfList(L);
//cout<<len<<endl;
sortList(L,len);
display(L);
//cout<<L->index<<endl;
return 0;
}
#include <iostream>
#include <malloc.h>
using namespace std;
typedef struct LNode{
int index;
struct LNode *next;
}LNode,*LinkList;
LinkList create(LinkList& L)
{
L = (LinkList)malloc(sizeof(LNode));
LNode *s,*r=L;
int x;
cin>>x;
while(x!=111){
s = (LNode*)malloc(sizeof(LNode));
s->index = x;
r->next = s;
r = s;
cin>>x;
}
r->next = NULL;
return L;
}
int lenOfList(const LinkList& L){
LNode *p=L->next;
int len=0;
while(p){
len++;
p = p->next;
}
return len;
}
LNode* GetItem(const LinkList& L,int i){
LNode* p=L->next;
int j=1;
if(i==0)
return L;
else if(i<1)
return NULL;
while(p&&j<i){
p = p->next;
j++;
}
return p;
}
void sortList(LinkList& L,int len){
int i,j,min,temp;
LNode *p=NULL,*q=NULL;
for(i=1;i<=len;i++){
min = i;
for(j=i+1;j<=len;j++)
if(GetItem(L,j)->index < GetItem(L,min)->index)
min = j;
if(min!=i){
p = GetItem(L,i);
q = GetItem(L,min);
temp = p->index;
p->index = q->index;
q->index = temp;
}
}
}
void display(const LinkList& L){
LNode* p=L->next;
while(p){
cout<<p->index<<" ";
p = p->next;
}
cout<<endl;
}
int main()
{
LinkList L;
L = create(L);
display(L);
int len = lenOfList(L);
//cout<<len<<endl;
sortList(L,len);
display(L);
//cout<<L->index<<endl;
return 0;
}