雜湊查詢與增補
阿新 • • 發佈:2019-01-05
題目描述
給出一個數據序列,建立雜湊表,採用求餘法作為雜湊函式,模數為11,雜湊衝突用鏈地址法和表尾插入
如果首次查詢失敗,就把資料插入到相應的位置中
實現雜湊查詢與增補功能
輸入
第一行輸入n,表示有n個數據
第二行輸入n個數據,都是自然數且互不相同,資料之間用空格隔開
第三行輸入t,表示要查詢t個數據
從第四行起,每行輸入一個要查詢的資料,都是正整數
輸出
每行輸出對應資料的查詢結果,每個結果表示為資料所在位置[0,11)和查詢次數,中間用空格分開
樣例輸入
6 11 23 39 48 75 62 6 39#include<iostream> using namespace std; struct Node { int data; Node *next; }; int main() { int key = 11; Node *Array[11]; int n; cin >> n; int i; for (i = 0; i < 11; i++) { Array[i]= new Node; Array[i]->next = NULL; Array[i]->data = -1; } for (i = 0; i < n; i++) { int yu, x; cin >> x; yu = x % key; Node *q = Array[yu]; while (q->next) q = q->next; Node *p = new Node; p->data = x; p->next = NULL; q->next = p; } int t; cin >> t; while (t--) { int x, yu; cin >> x; yu = x % key; Node *q = Array[yu]; int count = 0; while (1) { if (q->data == x) { cout << yu << " " << count << endl; break; } if (q->next == NULL) { cout << "error" << endl; Node *p = new Node; p->data = x; p->next = NULL; q->next = p; break; } count++; q = q->next; } } }