资源简介
在登录服务器系统时,都需要验证用户名和密码,如telnet远程登录服务器。用户输入用户名和密码后,服务器程序会首先验证用户信息的合法性。由于用户信息的验证频率很高,系统有必要有效地组织这些用户信息,从而快速查找和验证用户。另外,系统也会经常会添加新用户、删除老用户和更新用户密码等操作,因此,系统必须采用动态结构,在添加、删除或更新后,依然能保证验证过程的快速。请采用相应的数据结构模拟用户登录系统,其功能要求包括用户登录、用户密码更新、用户添加和用户删除等。
代码片段和文件信息
#include“AvlTree.h“
#include
using namespace std;
void AvlTree::PreOrderTraversal(AvlNode* BT){
if(BT){
cout<val.id()<<“ “<val.pw()<<‘ ‘;
PreOrderTraversal(BT->left);
PreOrderTraversal(BT->right);
}
}
void AvlTree::InOrderTraversal(AvlNode*BT){
if(BT){
InOrderTraversal(BT->left);
cout<val.id()<<“ “<val.pw()<<‘ ‘;
InOrderTraversal(BT->right);
}
}
void AvlTree::PostOrderTraversal(AvlNode*BT){
if(BT){
PostOrderTraversal(BT->left);
PostOrderTraversal(BT->right);
cout<val.id()<<“ “<val.pw()<<‘ ‘;
}
}
void AvlTree::LevelOrder()
{
queue q;//建立队列q
AvlNode*front;
if (root == NULL)return;//如果树空,则不进行操作
q.push(root);//将根节点压入队列
while (!q.empty())//循环直到队列空
{
front = q.front();
q.pop();//弹出队列的队顶元素
if (front->left)//如果节点有左儿子,则把左儿子压入队列末端
q.push(front->left);
if (front->right)//如果节点有右儿子,则把右儿子压入队列末端
q.push(front->right);
cout<val.id()<<“ “<val.pw()<<‘ ‘;
}
}
AvlNode * AvlTree::Empty(AvlNode * cur)//删除树
{
if(cur==NULL) return NULL;//如果树空,则返回NULL
Empty(cur->left);//递归删除
Empty(cur->right);//递归删除
free(cur);//释放节点
return NULL;
}
inline int AvlTree::Height(AvlNode * cur)//计算高度
{
if(cur==NULL) return 0;
return cur->height;//获得树高
}
AvlNode* AvlTree::LLchange(AvlNode * cur) //LL旋转操作
{
AvlNode * temp=cur->left;
cur->left=temp->right;
temp->right=cur;
cur->height=max(Height(cur->left)Height(cur->right))+1;
temp->height=max(Height(temp->left)Height(temp->right))+1;
return temp;
}
AvlNode* AvlTree::RRchange(AvlNode* cur)//RR旋转操作
{
AvlNode * temp=cur->right;
cur->right=temp->left;
temp->left=cur;
cur->height=max(Height(cur->left)Height(cur->right))+1;
temp->height=max(Height(temp->left)Height(temp->right))+1;
return temp;
}
AvlNode* AvlTree::LRchange(AvlNode* cur) //LR旋转操左
{
cur->left=RRchange(cur->left);
return LLchange(cur);
}
AvlNode* AvlTree::RLchange(AvlNode * cur)
{
cur->right=LLchange(cur->right);
return RRchange(cur);
}
AvlNode* AvlTree::Insert(AvlNode * curUserInfo va)
{
if(cur==NULL) //如果到底了,那么创建新的节点
{
cur=new AvlNode(va);
return cur;
}
if(cur->val==va) return cur;//有相同的
if(cur->val>va)
{
cur->left=Insert(cur->leftva);//注意这里是cur->left= 请认真思考为什么这么写
if(Height(cur->left)-Height(cur->right)==2)//插入后看是否平衡,如果不平衡显然是插入的那一边高度大
{
if(valeft->val)//判断是LL还是LR即插入的是left节点的left 还是right
cur=LLchange(cur);
else
cur=LRchange(cur);
}
}
else//同理
{
cur->right=Insert(cur->rightva);
if(Height(cur->right)-Height(cur->left)==2)
{
if(va>cur->right->val)
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 6544 2019-01-10 11:31 用户登入系统\AvlTree.cpp
文件 1630 2019-01-05 11:27 用户登入系统\AvlTree.h
文件 257795 2019-01-10 11:31 用户登入系统\AvlTree.o
文件 12517 2019-01-10 10:31 用户登入系统\Interface.cpp
文件 986 2019-01-05 07:44 用户登入系统\Interface.h
文件 972863 2019-01-10 10:31 用户登入系统\Interface.o
文件 159 2019-01-05 08:52 用户登入系统\main.cpp
文件 934751 2019-01-10 10:31 用户登入系统\main.o
文件 1328 2019-01-10 11:31 用户登入系统\Makefile.win
文件 147 2019-01-10 11:34 用户登入系统\Test.txt
文件 1085 2019-01-05 08:56 用户登入系统\UserInfo.cpp
文件 862 2019-01-05 10:42 用户登入系统\UserInfo.h
文件 86518 2019-01-10 10:31 用户登入系统\UserInfo.o
..A..H. 162 2019-04-07 22:04 用户登入系统\~$登入系统实验报告.docx
文件 1624 2019-01-10 11:34 用户登入系统\项目1.dev
文件 4010017 2019-01-10 11:31 用户登入系统\项目1.exe
文件 418 2019-01-10 11:34 用户登入系统\项目1.layout
目录 0 2019-04-07 22:18 用户登入系统
文件 1811089 2019-04-07 22:04 用户登入系统\用户登入系统实验报告.docx
----------- --------- ---------- ----- ----
8100495 19
相关资源
- 用户故事与敏捷方法 pdf
- 简单职工信息管理的设计与实现
- 计算机软件基础数据结构作业题——
- IBM SPSS Modeler 18.0 中文用户指南.pdf
- websocket向指定用户发信息
- Abaqus用户子程序二次开发官方PPT教程
- 高通MDM9X07平台用户开发手册
- 新浪微博爬虫支持用户、超话、地点
- SBC3530用户手册
- 最短路径-Dijkstra-欧洲旅行(详细分析
- 上海交大数据结构试卷
- 数据结构课程设计——飞机订票系统
- 软件开发文档word版包括需求分析、概
- M5311-硬件电路设计开发用户手册.rar
- 数据结构考研资料大汇总,全集!强
- 锐起企业版1024用户破解版(锐起OEM)
- netlogo中文用户手册
- 数据结构简明教程
- 用户体验面面观
- 自考数据结构教材2000年版
- Dell™ PowerEdge™ C6100 系统 硬件用户手
- 华科834复习全书数据结构+计算机网络
- Hi3559A芯片手册,最全的用户指南
- 海康威视VisionMaster算法平台 用户手册
- uWave Wizard 的用户手册,带图,有,超
- 长沙理工大学计算机专业2012-2019年考
- 用友PLM Professional V7.8用户手册.pdf
- LMS 2011年用户大会论文集 Virtual.Lab
- 移远BC26参考设计中文资料AT命令手册
- CDHD《用户手册》版本5.0.pdf
评论
共有 条评论