zoukankan      html  css  js  c++  java
  • 第六周 栈与队列作业

    1.学习总结

    1.1  重要关键词:数据结构,线性表,逻辑结构,物理结构,栈,队列;

    1.2 我的思维导图:

    2.PTA实验作业

    作业内容:

    本周要求挑选出3道题目书写设计思路、调试过程。设计思路使用伪代码描述。题目选做要求:

                a.不能选函数题

                b. 编程题选3题

    2.1题目一:7-1 jmu-字符串是否对称(20 分)

    2.2伪代码:定义字符串s2,定义栈s1;

                        int i=0

                        for(i=0;s2[i];i++)s1.push(s2[i]);//字符串全部入栈;

                         i=0;

                        while(!s1.empty()){

                             if(s1.top()!=s2[i]break;//字符串挨个与栈中元素比较;

                               s1.pop():}

    2.2设计思路:利用栈先进后出的存储特点,字符串入栈后,出栈元素恰好是字符串是逆序的;

    2.3代码截图:

    2.4  PTA提交列表:

     

    列表说明:部分正确是因为while(i++);

                    将i++提出在while语句中后则全部正确;

    2.1题目二:7-2 符号配对(20 分)

    2.2伪代码:定义str字符串;定义q栈;

                      while(gets(str)){

                         if(str[0]=='.'&&str[1]==' ')break;// 一行一行输入判断;

                       if(str[i]=='['||'('||'{'||'/*')p.push(str[i]);//此种符号均入栈;

                       if(str[i]==']'||')'||'}'||'*/')p.push(str[i])//碰到右边符号:

                            if(!p.empty()&&p.top()=='(')p.pop();//栈首元素为对应的左符号,栈首出栈;

                            else{
                            c=str[i];
                            flag=0;
                            break;
                           }//否则即为不配对字符;

                   if(!p.empty()){
                       if(p.top()=='[')printf("[-? ");
                       if(p.top()=='{')printf("{-? ");
                       if(p.top()=='(')printf("(-? ");
                      if(p.top()=='*')printf("/*-? ");
                 }//若栈不为空,则是缺少右边符号;   

    2.2设计思路:左符号入栈,碰到右符号时比较栈顶元素与右符号是否配对;若栈顶为空或不配对,说明缺少左符号

    否则比较完后,看栈中是否还有元素,若有,则说明缺少右符号;

    2.3代码截图:

    2.4  PTA提交列表:

    列表说明:编译错误是因为中英文输入法;

                    运行超时是结束输入语句判断错误;

    2.1题目三:7-1 jmu-报数游戏(15 分)

    2.2伪代码:定义变量n表总人数,m表循环报数的数;

                     定义一个队列q

                    先从1到n依次入队;

                     while(k--&&!q.empty())

                     依次取m-1个数出队然后又入队,入到后面;

                    cin>>e;//跳出循环时输出第m个数的值;

     从第一个数开始出队k=m-1(k--),且在第m个数之前的数出队后加到原队的后面,直到第m个数,出队。k又开始从k=m-1开始计数;

    2.2设计思路:因为队列先入先出的特点,要第m个数出队,则其前面的数必须先出队,所以可以把他们出队后又依次加在队列的后面;

    2.3代码截图:

    2.4  PTA提交列表

    列表说明:编译错误是因为复制粘贴的不准确,出现很多小问题;

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

       3.1 栈PTA排名

      3.2 队列PTA排名

        3.3 我的总分:  2分

    4. 阅读代码

            代码地址:https://gitee.com/adressad/codes/9ystlgoh6b413n5vfupa839

            原因:将符号优先级转化为数字,更容易理解;

    5. 代码Git提交记录截图

  • 相关阅读:
    从零开始学习html(五)与浏览者交互,表单标签——上
    从零开始学习html(四)认识标签(第三部分)
    从零开始学习html(三) 认识标签(第二部分)
    从零开始学习html(二)认识标签(第一部分)——下
    git 创建管理远程分支
    git分支
    Git 忽略一些文件不加入版本控制
    windows下 git+tortoiseGit的使用【转】
    WebStorm + JetBrains IDE Support 实现自动刷新功能
    Sublime Text 3 安装插件管理 Package Control
  • 原文地址:https://www.cnblogs.com/huyaoco/p/8736663.html
Copyright © 2011-2022 走看看