选择法排序
算法:分为两步,第一构建一个查找链表数据最小的结点并返回,第二遍历链表依次调用上述方法。
1,查找链表数据最小的方法代码
typedef struct LNode{
ElemType data;//数据域
struct LNode *next;//指针域,指向其后继结点
}LinkNode;
//返回类型为结点指针(地址)
LinkNode * MinList(LinkNode *L){
LinkNode *minp=L,*p=L->next;//minp指向头结点
while(p!=NULL){
if((minp->data)>(p->data)){
minp=p;
}
p=p->next;
}
return minp;
}
2,遍历链表并依次调用上述方法代码(选择法排序)
void SortList(LinkNode *&L){
LinkNode *j,*r=L->next;//j指向链表中最小的结点,r指向链表的当前结点
int temp;//用于交换位置,设数据为整数
while(r->next!=NULL){
j=MinList(r);
if(j->data!=r->data){
temp=r->data;
r->data=j->data;
j->data=temp;
}
r=r->next;//如果当前结点数据就是最小值直接后移一位
}
}
执行结果: