hashsort

本文介绍了一种使用 C++ 实现链表与哈希表的方法,通过自定义节点类和向量容器来实现链表插入操作及哈希表功能。用户可以输入数据并按特定算法计算哈希值来存储数据。

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

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

}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值