请帮我用数据结构c++实现提供对城市信息进行编辑(如:添加或删除)的功能
时间: 2024-03-21 07:41:04 浏览: 17
好的,以下是一个简单的实现示例,使用哈希表来存储城市信息:
```c++
#include <iostream>
#include <string>
#include <unordered_map>
using namespace std;
// 定义城市信息结构体
struct CityInfo {
string name; // 城市名称
double longitude; // 经度
double latitude; // 纬度
string traffic; // 交通工具(汽车、火车、飞机等)
CityInfo(string n, double lon, double lat, string t) : name(n), longitude(lon), latitude(lat), traffic(t) {}
};
// 定义哈希表类型,键为城市名称,值为城市信息结构体
typedef unordered_map<string, CityInfo> CityMap;
// 添加城市信息函数
void addCityInfo(CityMap& cityMap) {
string name, traffic;
double longitude, latitude;
cout << "请输入城市名称:";
cin >> name;
cout << "请输入经度:";
cin >> longitude;
cout << "请输入纬度:";
cin >> latitude;
cout << "请输入交通工具:";
cin >> traffic;
CityInfo cityInfo(name, longitude, latitude, traffic);
cityMap[name] = cityInfo; // 将城市信息存入哈希表
cout << "城市信息已添加。" << endl;
}
// 删除城市信息函数
void deleteCityInfo(CityMap& cityMap) {
string name;
cout << "请输入要删除的城市名称:";
cin >> name;
if (cityMap.count(name)) { // 检查该城市是否存在
cityMap.erase(name); // 从哈希表中删除该城市
cout << "城市信息已删除。" << endl;
} else {
cout << "该城市不存在,请重新输入。" << endl;
deleteCityInfo(cityMap); // 递归调用自身,重新获取城市名称
}
}
int main() {
CityMap cityMap;
// 添加一些初始城市信息
CityInfo beijing("北京", 116.4074, 39.9042, "飞机");
cityMap[beijing.name] = beijing;
CityInfo shanghai("上海", 121.4737, 31.2304, "火车");
cityMap[shanghai.name] = shanghai;
while (true) {
cout << "请选择操作:1.添加城市信息 2.删除城市信息 3.退出" << endl;
int choice;
cin >> choice;
switch (choice) {
case 1:
addCityInfo(cityMap);
break;
case 2:
deleteCityInfo(cityMap);
break;
case 3:
return 0;
default:
cout << "请输入正确的操作编号。" << endl;
break;
}
}
}
```
以上示例中,程序会不断循环,每次等待用户输入操作编号,然后根据用户选择调用相应的函数进行处理。其中,`addCityInfo` 函数用于添加城市信息,将用户输入的城市信息存入哈希表;`deleteCityInfo` 函数用于删除城市信息,从哈希表中删除用户输入的城市信息。