c++写散列表实现qq账户的申请和登录代码
时间: 2024-01-21 14:19:06 浏览: 94
下面是一个简单的散列表实现QQ账户的申请和登录的C++代码:
```c++
#include <iostream>
#include <string>
using namespace std;
const int SIZE = 100; // 散列表的大小
// 定义用户节点
struct User {
string username; // 用户名
string password; // 密码
User* next; // 指向下一个节点的指针
};
// 定义散列表
User* hashtable[SIZE] = {NULL};
// 计算散列值
int getHash(string key) {
int sum = 0;
for (int i = 0; i < key.length(); i++) {
sum += key[i];
}
return sum % SIZE;
}
// 添加用户
void addUser(string username, string password) {
int index = getHash(username); // 计算散列值
User* newUser = new User; // 创建新用户节点
newUser->username = username;
newUser->password = password;
newUser->next = NULL;
// 如果该位置为空,则直接插入
if (hashtable[index] == NULL) {
hashtable[index] = newUser;
}
// 否则插入到链表头部
else {
newUser->next = hashtable[index];
hashtable[index] = newUser;
}
cout << "添加用户成功!" << endl;
}
// 验证用户
bool verifyUser(string username, string password) {
int index = getHash(username); // 计算散列值
User* user = hashtable[index];
while (user != NULL) {
if (user->username == username && user->password == password) {
return true;
}
user = user->next;
}
return false;
}
int main() {
// 添加用户
addUser("Alice", "123456");
addUser("Bob", "654321");
// 验证用户
string username, password;
cout << "请输入用户名:";
cin >> username;
cout << "请输入密码:";
cin >> password;
if (verifyUser(username, password)) {
cout << "登录成功!" << endl;
}
else {
cout << "用户名或密码错误!" << endl;
}
return 0;
}
```
运行程序后,可以依次输入用户名和密码进行验证,程序会输出登录成功或者用户名密码错误的提示。
阅读全文