//链表带头结点,用的额外的节点有点多,6个;
void LinkedList::SelectSort(){
LinkNode *ptr = head->link;
LinkNode *pre_ptr = head;
LinkNode *q = ptr->link;
LinkNode *pre_q = ptr;
LinkNode *key;
LinkNode *pre_key;
while(ptr!= NULL){
key = ptr;
pre_key = pre_ptr;
q = ptr->link;
pre_q = ptr;
while(q!=NULL){
if(q->data < key->data){
key = q;
pre_key = pre_q;
}
pre_q = q;
q = q->link;
}
if(key!=ptr){
pre_key->link = key->link;
pre_ptr->link = ptr->link;
key->link = pre_ptr->link;
pre_ptr->link = key;
if (ptr->link == NULL)
key->link = ptr;
else{
ptr->link = pre_key->link;
pre_key->link = ptr;
}
}
pre_ptr = key;
ptr = key->link;
}
}