哈希表实现商品信息管理系统
时间: 2023-11-11 17:40:22 浏览: 100
哈希表是一种用于存储键值对的数据结构,它能够快速地在常数时间内进行插入、查找和删除操作。因此,哈希表非常适合用于实现商品信息管理系统。
实现商品信息管理系统的思路如下:
1. 定义商品信息结构体,包括商品编号、商品名称、商品价格等信息。
2. 定义哈希表结构体,包括哈希表大小、哈希函数、插入、查找和删除操作等方法。
3. 实现哈希函数,将商品编号转化为哈希表中的索引位置。
4. 实现插入、查找和删除操作方法,利用哈希函数进行商品编号的转化,然后在哈希表中操作对应的位置。
5. 实现商品信息的输入和输出方法,包括商品编号、商品名称、商品价格等信息。
6. 在主函数中,创建一个哈希表对象,并调用插入、查找和删除操作方法,进行商品信息的管理。
下面是一份C++的示例代码:
//定义商品信息结构体
struct GoodsInfo {
int goodsId;
string goodsName;
double goodsPrice;
};
//定义哈希表结构体
class HashTable {
private:
int tableSize;
vector<GoodsInfo> *table;
public:
HashTable(int size);
int hashFunction(int key);
void insert(int key, string name, double price);
void search(int key);
void remove(int key);
void displayTable();
};
//哈希表构造函数
HashTable::HashTable(int size) {
tableSize = size;
table = new vector<GoodsInfo>[tableSize];
}
//哈希函数
int HashTable::hashFunction(int key) {
return key % tableSize;
}
//插入操作
void HashTable::insert(int key, string name, double price) {
int index = hashFunction(key);
GoodsInfo newGoods = {key, name, price};
table[index].push_back(newGoods);
}
//查找操作
void HashTable::search(int key) {
int index = hashFunction(key);
for (int i = 0; i < table[index].size(); ++i) {
if (table[index][i].goodsId == key) {
cout << "商品编号:" << table[index][i].goodsId << endl;
cout << "商品名称:" << table[index][i].goodsName << endl;
cout << "商品价格:" << table[index][i].goodsPrice << endl;
return;
}
}
cout << "没有找到该商品!" << endl;
}
//删除操作
void HashTable::remove(int key) {
int index = hashFunction(key);
for (int i = 0; i < table[index].size(); ++i) {
if (table[index][i].goodsId == key) {
table[index].erase(table[index].begin() + i);
return;
}
}
cout << "没有找到该商品!" << endl;
}
//输出哈希表
void HashTable::displayTable() {
for (int i = 0; i < tableSize; ++i) {
cout << "哈希表第 " << i << " 个位置:";
for (int j = 0; j < table[i].size(); ++j) {
cout << table[i][j].goodsId << " ";
}
cout << endl;
}
}
int main() {
HashTable ht(10);
ht.insert(1001, "可乐", 3.5);
ht.insert(1002, "薯片", 5.2);
ht.insert(1003, "牛肉干", 25.8);
ht.displayTable();
ht.search(1002);
ht.remove(1003);
ht.displayTable();
return 0;
}
阅读全文