#include<iostream>
#include<string>
#include<cctype>
#include<fstream>
#include<algorithm>
using namespace std;
const int MaxSize = 97;
typedef struct Element {
int num;
struct Element* next;
}Element;
typedef struct HashTable {
int tablesize;//散列表的大小
Element* restore;
}H, * Hash;
int gethash(int key, Hash h)
{
return key % (h->tablesize);
}
Hash create(int size) {
Hash h = new struct HashTable;
h->restore = (Element*)malloc(size * sizeof(Element));
h->tablesize = size;
for (int i = 0; i < size; i++) {
h->restore[i].next = NULL;
}
return h;
}
void insert(int key, Hash h)
{
int pos = gethash(key, h);
Element* head = new Element;
Element* middle = new Element;
head = h->restore[pos].next;
while (1 == 1) {
if (head == NULL) break;
head = head->next;
}
middle->num = key;
head = middle;
}
Element* find(int key, Hash h) {
int pos = gethash(key, h);
Element* head = new Element;
head = h->restore[pos].next;
while (head != NULL && head->num != key) {
head = head->next;
}
return head;
}
int main()
{
Hash h = create(97);
int n;
cout << "请输入数字数目 ";
cin >> n;
for (int i = 0; i < n; i++) {
int a; cin >> a;
insert(a, h);
}
Element* pr = find(99, h);
if (pr == NULL) cout << "no found";
}
基于链接法的哈希表的构造
最新推荐文章于 2024-11-22 23:53:59 发布