编写一个程序,输入n个用户的姓名和电话号码,按照用户姓名的词典顺序排列输出用户的姓名和电话号码
时间: 2023-05-31 10:17:50 浏览: 333
汇编程序 按一定格式显示姓名和电话号码
### 回答1:
好的,以下是程序的代码:
```
#include <iostream>
#include <map>
#include <string>
using namespace std;
int main() {
int n;
cin >> n;
map<string, string> users;
for (int i = ; i < n; i++)
### 回答2:
本题思路与实现
本题要求我们编写一个程序,输入n个用户的姓名和电话号码,然后按照用户姓名的字典顺序排列,输出用户的姓名和电话号码。
思路:
我们可以采用哈希表暴力地存储n个用户信息,在输出时利用字典序排序。
具体实现:
1. 创建一个哈希表,用于存储所有用户信息。
2. 从键盘读入用户数n,然后使用一个循环从键盘读入n个用户信息,包括姓名和电话号码。
3. 存储用户信息。对于每个读入的用户,我们以用户姓名为键,以用户信息结构体为值,把它存入哈希表中。
4. 哈希表字典序排序。我们可以使用STL的map容器按照字典顺序对用户名进行排序。
5. 遍历排序后的哈希表,将每个用户的姓名和电话号码依次输出即可。
完整代码如下:
### 回答3:
为了实现这个程序,我们需要使用一种可以按照字典顺序排列的数据结构,比如说红黑树,从而可以快速地进行插入和查找操作。步骤如下:
1. 定义一个包含姓名和电话号码的结构体,用于存储每个用户的信息。
2. 定义一个红黑树,每个节点存储一个用户信息的结构体,根据用户姓名作为键进行比较和排序。
3. 输入n个用户的姓名和电话号码,将每个用户信息的结构体插入红黑树中。
4. 遍历红黑树,按照字典顺序输出每个节点的用户姓名和电话号码。
下面是具体实现代码:
```c++
#include <iostream>
#include <string>
#include <map>
using namespace std;
struct UserInfo {
string name;
string phone;
};
bool operator<(const UserInfo& a, const UserInfo& b) {
return a.name < b.name;
}
int main() {
map<UserInfo, int> users;
int n;
cout << "请输入用户数量:";
cin >> n;
for (int i = 0; i < n; i++) {
string name, phone;
cout << "请输入第 " << i+1 << " 个用户的姓名和电话号码,用空格隔开:";
cin >> name >> phone;
UserInfo user;
user.name = name;
user.phone = phone;
users[user] = i;
}
cout << "用户列表按照姓名排序如下:" << endl;
for (auto iter = users.begin(); iter != users.end(); iter++) {
cout << iter->first.name << "\t" << iter->first.phone << endl;
}
return 0;
}
```
上述代码中,我们用`std::map`来作为红黑树的具体实现,其中键类型是`UserInfo`结构体,值类型是一个整数,表示该用户的编号。在实现中,我们还需要重载`<`运算符,使其可以比较两个`UserInfo`结构体的大小,从而可以用于红黑树的键比较和排序。用户的姓名和电话号码被存储在结构体中,通过输入循环将每个用户结构体插入到红黑树中,最后根据字典序遍历输出。
阅读全文