链表选择排序

来源:互联网 发布:oracle表数据恢复 编辑:程序博客网 时间:2024/06/16 02:25

链表选择排序

#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;}


0 0
原创粉丝点击