Hashtable类:


using System.Collections.ArrayList;

ArrayList ss=new ArrayList();
//or

ArrayList ss=new ArrayList(25);//开始就指定有25个,上面默认是16个可以无限增大
ss.add(new v());//可以存任何对象。
v v=(v)ss[1];//取的时候要转换。
ss.Insert(1,new v())//可以插入
ss.RemoveAt(1);//删除
int i=ss.Count;//个数
//*********************************************
//字典
Hashtable类:
Hashtable eee=new Hashtable(53);//可以指定原始容量,53是素数,工作效率高
eee.Add(id,obj);
eee[id];
eee.remove(id);
int i = eee.cout;

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
#include<vector> #include<iostream> #define NULLKEY - 32768 using namespace std; class HashTable { public: HashTable(int n); ~HashTable(); void InsertHash(int key);//插入关键字进散列表 int SearchHash(int key);//查找关键字 void Show();//显示散列表 private: int Hash(int key);//散列函数 vector<int> elem;//数据元素 int count;//当前数据元素个数 int m;//散列表长度 }; HashTable::HashTable(int n = 30) :count(0), m(n) { for (int i = 0; i < n; i++) { elem.push_back(NULLKEY); } } HashTable::~HashTable() { } int HashTable::Hash(int key)//散列函数 { return key % m;//除留余数法 } void HashTable::InsertHash(int key)//插入关键字进散列表 { int addr = Hash(key); while (NULLKEY != elem[addr]) { addr = (addr + 1) % key; } elem[addr] = key; count++; } int HashTable::SearchHash(int key)//查找关键字 { int addr = Hash(key); while (elem[addr] != key) { addr = (addr + 1) % m; if (NULLKEY == elem[addr] || Hash(key) == addr) { return -1; } } return addr; } void HashTable::Show()//显示散列表 { for (int i = 0; i < m; i++) { cout << elem[i] << " "; } cout << endl; } int main() { int n, e, val; vector<int> vec; cout << "输入数据元素个数:"; cin >> n; cout << "输入数据元素:" << endl; for (int i = 0; i < n; i++) { cin >> e; vec.push_back(e); } HashTable H(n); for (int i = 0; i < n; i++) H.InsertHash(vec[i]); cout << "散列表:" << endl; H.Show(); cout << "输入要查找的数据元素:"; cin >> val; e = H.SearchHash(val); if (-1 == e) cout << "查找失败" << endl; else cout << "查找的数据元素在散列表中的位置下标:" << e << endl; system("pause"); return 0; }对这个代码进行注释
06-11

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值