将数组元素插入哈希 table
Insert elements of array into hash table
我想编写一些代码,将数组中的元素插入到下面的散列 table 中。我正在使用数组“a”作为测试数组,看看我是否可以将元素插入散列 table。但是,当我 运行 代码时,只有第一个元素被插入到哈希 table 中,其余键保持为空。
#include<iostream>
#include<cstdlib>
#include<string>
#include<cstdio>
using namespace std;
struct table
{
int key;
int val;
table()
{
}
table(int k, int v)
{
key = k;
val = v;
}
};
void INSERT(table T[], table x)
{
T[x.key] = x;
}
void DELETE(table T[], table x)
{
T[x.key] = table(0, 0);
}
table SEARCH(table T[], int k)
{
return T[k];
}
int main()
{
int a[] = {15, 11, 27, 8, 12};
int n = sizeof(a)/sizeof(a[0]);
int i, key, val;
table T[n];
table x;
for(i = 0; i < n; i++) {
T[i] = table(0, 0);
key=i+1;
val=a[i];
INSERT(T, table(key, val));
x = SEARCH(T, 1);
if (x.key == 0)
{
cout<<"No element inserted at the key "<< key <<endl;
} else {
cout<<"Element at key "<< key <<" is-> "<< x.val <<endl;
}
}
return 0;
}
这行有问题
x = SEARCH(T, 1);
将1
替换为key
x = SEARCH(T, key);
好吧,你已经在调用站点 INSERT() 中传递了 1 作为 k,所以递增
您设置的 (key+=1) 不会被使用,并且永远不会搜索键 1 处的值。在迭代期间,它将继续搜索 k=1 处不存在的值
我想编写一些代码,将数组中的元素插入到下面的散列 table 中。我正在使用数组“a”作为测试数组,看看我是否可以将元素插入散列 table。但是,当我 运行 代码时,只有第一个元素被插入到哈希 table 中,其余键保持为空。
#include<iostream>
#include<cstdlib>
#include<string>
#include<cstdio>
using namespace std;
struct table
{
int key;
int val;
table()
{
}
table(int k, int v)
{
key = k;
val = v;
}
};
void INSERT(table T[], table x)
{
T[x.key] = x;
}
void DELETE(table T[], table x)
{
T[x.key] = table(0, 0);
}
table SEARCH(table T[], int k)
{
return T[k];
}
int main()
{
int a[] = {15, 11, 27, 8, 12};
int n = sizeof(a)/sizeof(a[0]);
int i, key, val;
table T[n];
table x;
for(i = 0; i < n; i++) {
T[i] = table(0, 0);
key=i+1;
val=a[i];
INSERT(T, table(key, val));
x = SEARCH(T, 1);
if (x.key == 0)
{
cout<<"No element inserted at the key "<< key <<endl;
} else {
cout<<"Element at key "<< key <<" is-> "<< x.val <<endl;
}
}
return 0;
}
这行有问题
x = SEARCH(T, 1);
将1
替换为key
x = SEARCH(T, key);
好吧,你已经在调用站点 INSERT() 中传递了 1 作为 k,所以递增 您设置的 (key+=1) 不会被使用,并且永远不会搜索键 1 处的值。在迭代期间,它将继续搜索 k=1 处不存在的值