zoukankan      html  css  js  c++  java
  • 博客作业05--查找

    1.学习总结(2分)

    1.1查找的思维导图

    图片查看地址:[https://www.processon.com/view/link/5b08fb76e4b0fccf7237d4ba]

    1.2 1.2 查找学习体会

    • 本周学习了map的用法,虽然还不熟悉,但可以上手,还需要更多的了解。
    • 使用count,返回的是被查找元素的个数。如果有,返回1;否则,返回0。注意,map中不存在相同元素,所以返回值只能是1或0。
      使用find,返回的是被查找元素的位置,没有则返回map.end()。
      map的基本用法:[https://blog.csdn.net/u012577123/article/details/46821581]
    • 掌握二叉树节点删除,平衡二叉树插入、删除节点调整,对B树的操作,解决哈希冲突等的方法、画法。
    • 查找的代码比较多,没有全部掌握熟记。

    2.PTA实验作业(4分)

    2.1 题目1:QQ帐户的申请与登陆

    2.2 设计思路(伪代码或流程图)

    申请STL容器<long long, string>QQ存放用户信息
    迭代器map<long long, string>::iterator iter;
    定义 ch:新/旧号码 ,number:QQ号,password:密码 
    输入N,表示N条指令;
    for i=0 to N
    	输入ch、number、password;
            调用迭代器,查找map里面的是否有这个账号
    	if ch为L,旧号码
    		if QQ号存在,判断密码是否正确
    			if 正确,输出"Login: OK";
    			else 输出"ERROR: Wrong PW";
    		if QQ号不存在,输出"ERROR: Not Exist";
    	if ch为N,新号码
    		if QQ号存在,输出"ERROR: Exist";
    		if QQ号不存在,添加号码信息,输出"New: OK";
    end for 
    
    

    2.3 代码截图

    2.4 PTA提交列表说明。

    • 编译错误:编译器用c(gcc)错误
      解决方法:编译器改用c++

    • 答案错误
      解决方法:QQ[number]==password;多了一个=

    2.1 题目2:航空公司VIP客户查询

    2.2 设计思路(伪代码或流程图)

    申请STL容器<string,int>mymap存放用户信息
    输入飞行记录条数N、最低里程K
    for i=0 to N
    	输入身份证号id、飞行里程mileage;
    	if 低于K公里按k公里累积,按K公里累积;
    	if 有相同的身份证号,累积飞行里程 ;
    	else  记录飞行里程;
    end for
    
    输入M,表示M个查询人身份证号
    for i=0 to M
    	输入查询人的身份证号id;
    	if 有此查询人,输出里程累计值;
    	else 输出“No Info” 
    end for 
    
    

    2.3 代码截图

    2.4 PTA提交列表说明。

    2.1 题目3:二叉搜索树中的最近公共祖先

    2.2 设计思路(伪代码或流程图)

    定义p=T;
    遍历树,找节点u
    if 树中没有u ,返回ERROR;
    遍历树,找节点v
    if 树中没有v ,返回ERROR;
    while(p不为空时)
    	if u和v都小于Key,则LCA位于左子树中;
    	if u和v都大于Key,则LCA位于右子树中; 
    	if 找到最近公共祖先,则返回该值;
    end while  
    
    

    2.3 代码截图

    2.4 PTA提交列表说明。

    • 部分正确:本题代码度娘提供帮助,修改时没注意改错
      解决方法:重新检查代码,发现修改代码时改错了

    3.截图本周题目集的PTA最后排名(3分)

    3.1 PTA排名

    3.2 我的得分:145(2.5分)

    4. 阅读代码(必做,1分)

    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    #define MAXN 110017
    typedef struct UserNode* ptrUser;
    struct UserNode{
        int ID;
        char password[20];
        ptrUser next;
    };
     
    ptrUser HashTable[MAXN];
     
    void InsertUserNode(int idx,int id,char* pwd)//插入新信息 
    {
        ptrUser P;
        P=new UserNode;
        P->ID=id;
        strcpy(P->password,pwd);
        P->next=HashTable[idx];
        HashTable[idx]=P;
    }
    int Hash(int x)
    {
        return x%MAXN;
    }
    ptrUser FindUser(int id)//找QQ号 
    {
        ptrUser P;
        int idx=Hash(id);
        P=HashTable[idx];
        while(P!=NULL)
        {
            if (P->ID==id)
            return P;
            P=P->next;
        }
        return NULL;
    }
    
    void Login(int id,char pwd[])//老帐户 
    {
        ptrUser P;
        P=FindUser(id);
        if(P==NULL)//老帐户QQ不存在 
        {
            printf("ERROR: Not Exist
    ");
            return;
        }
        else if(strcmp(P->password,pwd)==0)//QQ存在,密码正确 
        {
            printf("Login: OK
    ");
        }
        else//密码错误 
            printf("ERROR: Wrong PW
    ");
             
    }
     
    void NewUser(int id,char pwd[])//新账户 
    {
        ptrUser P;
        P=FindUser(id);
        if(P!=NULL)//号码已存在 
        {
            printf("ERROR: Exist
    ");
            return;
        }
        else//新账户申请成功 
        {
            InsertUserNode(Hash(id),id,pwd);//插入新信息 
            printf("New: OK
    ");
        }
    }
     
    int main()
    {
        int i,N;
        char command[3];
        int id;
        char pwd[20];
        scanf("%d",&N);
        for(i=0;i<N;i++)
        {
            scanf("%s",command);
            scanf("%d",&id);
            scanf("%s",pwd);
            if(command[0]=='L')//老帐户 
                Login(id,pwd);
            else if(command[0]=='N')//新账户 
                NewUser(id,pwd);
        }
    }
    

    5. 代码Git提交记录截图

  • 相关阅读:
    迅为-imx6ull开发板之C语言实现LED例程
    移植5.4内核到迅为I.MX6ULL开发板
    一文搞懂定制Ubuntu文件系统-基于迅为imx6开发板
    移植Linux-5.4+内核到4412开发板
    iTOP4412开发板Linux下多核处理器相关知识
    使用迅为IMX6ULL开发板第一个汇编实验(二)
    mplayer移植-迅为IMX6Q开发板
    使用迅为IMX6ULL开发板第一个汇编实验(一)
    网易2019秋招--翻转翻转
    百度2019秋招--混战世界
  • 原文地址:https://www.cnblogs.com/smtwula/p/9085530.html
Copyright © 2011-2022 走看看