#include<iostream>
#include<string>
using namespace std;
class node{
public:
string name;
string keyword;
node* left;
node* right;
node(string a = "0", string b = "0", node* c = 0, node* d = 0) :
name(a), keyword(b), left(c), right(d){}
~node(){
left = 0; right = 0;
}
};
void search(string name2, string keyword2, bool& nameb, bool& keywordb,node* root){
node* p = root;
nameb = keywordb = false;
while (p){
if (name2 < p->name)
p = p->left;
else if (name2>p->name)
p= p->right;
else {
nameb = true;
if (keyword2 == p->keyword)
keywordb = true;
else
keywordb = false;
}
}
}
int main(){
node a, b, c, d, e;
a.name = "cang"; a.keyword = "12345";
b.name = "123"; b.keyword = "123";
c.name = "onepiece"; c.keyword = "54321";
d.name = "fan"; d.keyword = "fan123";
e.name = "wang"; e.keyword = "@@110";
a.left = &b;
a.right = &c;
c.left = &d;
c.right = &e;
node* root = &a;
cout << "请输入要登录的用户名和密码" << endl;
string aa, bb;
cin >> aa >> bb;
bool nameb, keywordb;//判断用户名和密码正确与否
search(aa,bb, nameb, keywordb, root);
if (nameb&&keywordb)cout << "登录成功!" << endl;
else if (nameb == true && keywordb == false){
while (keywordb == false){
cout << "您输入的密码有误,请重新输入密码" << endl;
cin >> bb;
search(aa,bb, nameb, keywordb, root);
if (keywordb == true)
cout << "登录成功!" << endl;
}
}
return 0;
}
可以通过编译,输入完后,程序没有反应,我是在做一个二叉树的实验,所以把问题精简成这样来测试,
我百思不得其解啊