hashsort

来源:互联网 发布:数据分析师 职称 编辑:程序博客网 时间:2024/05/16 09:43

搞了好几天 终于弄个内存出错不是很厉害的版本....

#include<iostream>

#include<vector>

using namespace std;

class node

{

int data;

node* next;

public:

node(int d=0,node* n=0):data(d),next(n){}

~node(){delete next;}

void set_data(int d){data=d;}

int get_data(){return data;}

void set_next(node* n){next=n;}

node* get_next(){return next;}

 

void show(){cout<<data<<'';next->show();}

};

 

void insert(vector<node*>&,int,int);

void hash(vector<node*>&);

 

void insert(vector<node*>& arr,int dat,int sta)

{

node* tmp=arr.at(sta);

for(;(tmp->get_next()!=arr.at(sta+1))&&(tmp->get_next()->get_data()<dat);tmp=tmp->get_next());

if(tmp->get_next()!=arr.at(sta+1))

{

node* add=new node(dat,tmp->get_next());

tmp->set_next(add);

}

else

{

node* add=new node(dat,arr.at(sta+1));

tmp->set_next(add);

}

}

void hash(vector<node*>& arr)

{

int dat;

int pos;

cout<<"input data:";

while(cin>>dat)

{

node* temp=new node(dat,0);

pos=dat/10;

if(!arr.at(pos))

{

arr.at(pos)=temp;

temp->set_next(arr.at(pos+1));

}

else

insert(arr,dat,pos);

temp=0;

cout<<"input data:";

}

}

 

int main()

{

vector<node*> array(10,0);

hash(array);

array.at(0)->show();

return 0;

}