zoukankan      html  css  js  c++  java
  • 用链表队列实现基数排序;

    代码:

    #include "iostream"
    #include "cmath"
    #define null 0
    using namespace std;
    
    typedef struct node{
        int data;
        struct node *next;
    }Link;
    //定义链表结点
    
    Link *createLink(Link *head){
        Link*tail;
        head=tail=(Link*)malloc(sizeof(Link));
        head->next=null;
        int data;
        cin>>data;
        Link *p;
        while(data!=0){
            p=(Link*)malloc(sizeof(Link));
            p->data=data;
            p->next=null;
            tail->next=p;
            tail=tail->next;
            cin>>data;
        }
        return head;
    }//创建链表
    
    
    void display(Link *head){
        Link*p=head->next;
        while(p!=null){
            cout<<p->data<<" ";
            p=p->next;
        }
        cout<<endl;
    }//显示链表
    
    int number(int data,int n){
        int temp;
        temp=data/(int)pow((double)10,n-1);
        return temp%10;
    }//返回一个数的某个位的数
    
    void radix_sort(Link*h,Link*count[],Link*tail[]){
        int i;
        int j;
        int x;
        Link *p;
        Link*temp;
        for(i=1;i<=3;i++){
            p=h->next;
            while(p!=null){
                x=number(p->data,i);
                temp=p->next;
                tail[x]->next=p;
                tail[x]=tail[x]->next;
                tail[x]->next=null;
                p=temp;
            }
    
            p=h;
            for(j=0;j<=9;j++){
                if(count[j]!=tail[j]){
                    p->next=count[j]->next;
                    p=tail[j];
                    tail[j]=count[j];
                    tail[j]->next=null;
                }
            }
        }
    }
    
    void main(){
        Link *h=null;
        Link*count[10];
        Link*tail[10];
        Link*p;
        for(int i=0;i<10;i++){
            p=(Link*)malloc(sizeof(Link));
            p->next=null;
            count[i]=tail[i]=p;
        }
        h=createLink(h);
        display(h);
        cout<<number(h->next->data,3)<<endl;
        radix_sort(h,count,tail);
        display(h);
        getchar();
        getchar();
    }
    贯彻自己的思想
  • 相关阅读:
    iOS学习笔记35 社交分享
    iOS学习笔记35 社交分享
    iOS学习笔记08 Quartz2D绘图
    iOS学习笔记08 Quartz2D绘图
    iOS学习笔记08 Quartz2D绘图
    iOS学习笔记08 Quartz2D绘图
    iOS学习笔记14 网络(三)WebView
    iOS学习笔记14 网络(三)WebView
    iOS学习笔记14 网络(三)WebView
    Oracle使用dblink连接SqlServer
  • 原文地址:https://www.cnblogs.com/593213556wuyubao/p/2863398.html
Copyright © 2011-2022 走看看