• 大小: 2.91MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-08-11
  • 语言: 其他
  • 标签: 数据结构  

资源简介

在登录服务器系统时,都需要验证用户名和密码,如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


评论

共有 条评论