单链表的直接插入、简单选择插入算法

//单链表的直接插入排序
void InsertSort(LinkList &L){
    LNode *p=L->next;
    LNode *q,*r;
    if(p!=null){//原单链表中有一个或多个结点
        r=p->next;//保存p结点的后继结点
        p->next=null;
        p=r;
        while(p!=null){
            r=p->next;
            q=L;
            while(q->next!=null && q->next->data<p->data){
                q=q->next;//在有序表中找插入p的前驱结点q
            }
            p->next=q->next;
            q->next=p;
            p=r;
        }
    }
}
设计一个算法,实现在一个带表头结点的单链表上的简单选择排序算法
    单链表中每个结点2个域:data和link,要求先使用类型说明准确描述你所使用的单链表存储表示
*/
typedef struct LNode{
    int data;
    struct  LNode* next;
}LinkList;
void LinkList_Select_Sort(LinkList &L){
    LNode *p,*q,*r;
    int e,temp;
    for(q=L->next;q!=null;q=q->next){
        e=q->data;
        r=q;
        for(p=p->next;p;p=p->next){
            if(e>p->data){
                e=p->data;
                r=p;
            }
        }
        temp=q->data;
        q->data=r->data;
        r->data=temp;
    }
}
posted @ 2019-12-25 10:55  ZzUuOo666  阅读(679)  评论(0编辑  收藏  举报