回 帖 发 新 帖 刷新版面

主题:谁写过箱子排序,

求箱子排序代码!!!!!!!!!!!!! c++语言 用类写的

回复列表 (共8个回复)

沙发

你自己不会写吗?

板凳


在做,没做出,设计类 真难

 很头疼

3 楼


Data Structures,Algorithms,and Applications in c++
这本书里有。这是我们教科书,源代码全有,你去看看就行。

4 楼


 你难道就 只看看代码,而不自己写吗?
强烈建议 写了 发上来吧!

5 楼


我写了一个,你看行不行?
//******************
Node.h
template<class T>
class Node
{
    friend ostream&operator<<(ostream&,const Node &);
public:
    int operator!=(Node x)const
    {
        return(score!=x.score||name[0]!=x.name[0]);
    }
    operator int()const{return score;}
protected:
private:
    int score;
    char *name;
};
ostream&operator<<(ostream&out,const Node& x)
{
    out<<x.score<<'  '<<x.name[0]<<'   ';
    return out;
}
(待续)

6 楼


(接上面)
//*********************************
Chain.h
#include <iostream>
using namespace std;
template<class T> class Chain;
template<class T>
class ChainNode
{
    friend class Chain<T>;
private:    
    T data;
    ChainNode<T> *link;
};
template<class T>
class Chain{
    public:
        Chain(){first=0;}
        ~Chain();
        void InPut();                        Chain<T>&Insert(int k,const T&x);
        void Output(ostream&out)const;
        void BinSort();
    private:
        ChainNode<T> *first;
        T max;
};
template<class T>
void Chain<T>::InPut()
{
    cout<<"请输入你要排序的数个数:\n";
    int len=0;
    cin>>len;
    cout<<"请输入你要排序的数:\n";
    T element;
    max=0;
    for (int i=1;i<=len;i++)
    {
        cin>>element;
        if (max<element)
        {
            max=element;
        }
        Insert(i-1,element);
    }
}
template<class T>
Chain<T>::~Chain()
{
    ChainNode<T>*next;
    while (first)
    {
        next=first->link;
        delete first;
        first=next;
    }
}
template<class T>
void Chain<T>::BinSort()//range----箱子个数
{
    int b;
    ChainNode<T>**bottom,**top;
    bottom=new ChainNode<T>*[max+1];
    top=new ChainNode<T>*[max+1];
    for(b=0;b<=max;b++)
        bottom[b]=0;
    for(;first;first=first->link)
    {
        b=first->data;
        if (bottom[b]) 
        {
            top[b]->link=first;
            top[b]=first;
        }
        else bottom[b]=top[b]=first;
    }
    ChainNode<T>*y=0;
    for(b=0;b<=max;b++)
        if(bottom[b])
        {
            if (y)
            {
                y->link=bottom[b];
            }
            else first=bottom[b];
            y=top[b];
        }
        if (y)
        {
            y->link=0;
        }
        delete []bottom;
        delete []top;
}
template<class T>
void Chain<T>::Output(ostream&out)const
{
    ChainNode<T>*current;
    for(current=first;current;current=current->link)
        out<<current->data<<"    ";
}
template<class T>
ostream& operator<<(ostream&out,const Chain<T>&x)
{
    x.Output(out);
    return out;
}
template<class T>
Chain<T>&Chain<T>::Insert(int k,const T&x)
{
    if(k<0) cout<<"error!"<<endl;
    ChainNode<T>*p=first;
    for(int index=1;index<k&&p;index++)
        p=p->link;
    if(k>0&&!p) cout<<"error!"<<endl;
    ChainNode<T>*y=new ChainNode<T>;
    y->data=x;
    if(k)
    {
        y->link=p->link;
        p->link=y;
    }
    else
    {
        y->link=first;
        first=y;
    }
    //if(!y->link)last=y;
    return *this;
}
//**************************
main.cpp
#include "Chain.h"

void main()
{
    Chain<int> mychain;
    mychain.InPut();
    mychain.BinSort();
    cout<<mychain;

}

7 楼


当然,我是凭自己理解写的,不知道符不符合要求。

8 楼

非常感谢!!



我来回复

您尚未登录,请登录后再回复。点此登录或注册