• DS博客作业03--栈和队列


    1.本周学习总结

    本周学习了栈和队列的结构,在对于某些问题时,这种数据结构可以很好的解决问题,例如表达式的转换以及表达式求解,运用栈的结构,可以很好的解决。本节学习最具有收获的一点就是栈和队列容器的学习和应用,容器的应用,在编程的时候,可以大大节省时间以及代码行数,更加方便的实现进栈出栈的操作,对于今后的编程学习以及栈和队列的应用都有着很大的意义。

    2.PTA实验作业

    2.1.题目1

      假设以I和O分别表示入栈和出栈操作。栈的初态和终态均为空,入栈和出栈的操作序列可表示为仅由I和O组成的序列,称可以操作的序列为合法序列,否则称为非法序列。 比如输入字符串IOOI,表示栈操作为入栈出栈出栈入栈,这样操作序列是不合法。
    

    2.1.1 设计思路

      本题主要是对于栈内符号判断。扫描字符数组:
      1.在栈空的时候,如果遇到‘O’则直接结束,否则就将其入栈。
      2.在栈不为空时,如果是'I',则将其入栈,若是‘O’,则将栈顶‘I’出栈。
      3.循环执行上述两步,最后判断栈内是否为空,如果是空则符合操作,不为空则不符操作。
    

    2.1.2 代码截图

    2.1.3 PTA提交列表说明

    2.2 题目2

      如果用一个循环数组表示队列,并且只设队列头指针Front,不设尾指针Rear,而是另设Count记录队列中元素个数。请编写算法实现队列的入队和出队操作。
    

    2.2.1设计思路

      1.本题主要应用循环队列的结构,其关键点就是尾指针的定义,虽然题目未给出。
      2.入队:首先判断队列是否为满,如果不满,则执行入队操作。
      3.出队:首先判断队列是否为空,如果不空,则执行出队操作。
    

    2.2.2代码截图

    2.2.3 PTA提交列表说明

    2.3 题目3

      编写一个算法利用顺序栈判断一个字符串是否是对称串。所谓对称串是指从左向右读和从右向左读的序列相同。
    

    2.3.1 设计思路

      本题整体思路和表达式转换差不多
      1.先将扫描到的字符入栈,再对接下来的字符进行判断。
      2.如果接下来的字符和栈顶元素一致,则将栈顶元素出栈。
      3.结束时判断是否为空栈,如果为空,则是对称字符串。反之,不对称。
    

    2.3.2 代码截图


    2.3.3 PTA提交列表说明

    2.4 题目4

      报数游戏是这样的:有n个人围成一圈,按顺序从1到n编好号。从第一个人开始报数,报到m(m<n)的人退出圈子;下一个人从1开始报数,报到m的人退出圈子。如此下去,直到留下最后一个人。其中n是初始人数;m是游戏规定的退出位次(保证为小于n的正整数)。要求用队列结构完成。输出数字间以空格分隔,但结尾不能有多余空格。
    

    2.4.1 设计思路

      本题主要运用队列结构,通过不断的出队入队来排序,再将其元素放入数组a输出
      1.先判断m和n的大小。如果m>n,则直接返回。如果相等,则返回队尾元素。如果m<n,则放回不断的排序
      2.排序:循环m次,先将队头元素储存,再将其出队,再入队。
      3.到了要输出的元素,就将其放入数组a
      4.最后先输出数组a中的元素,再将队列中剩下的元素输出。
    

    2.4.2 代码截图

    ![](https://img2018.cnblogs.com/blog/1476554/201904/1476554-20190422170807734-1868184778.png)
    ![](https://img2018.cnblogs.com/blog/1476554/201904/1476554-20190422170827622-458149455.png)
    
    

    2.4.3 PTA提交列表说明

      此题虽然提交一次正确,但在编程的过程中,还是出现了一些问题
    
    • Q1:队列循环时,忘记将n自减,同时出入队语法错误

    • A1:加入语句n--,并将队列循环重新写入。

    • Q2:循环时未将其元素删除,导致重复出现

    • A2:加入语句q.pop( ),使队列得以不断循环

    3、栈和队列上机考试

    3.1 错题1

      本题要求在一个数组中实现两个堆栈。
    

    3.1.1代码截图



    3.1.2原因分析

      这道题的大致思想是知道到,但还是因为一些小错误导致整题崩溃,而且在这题花费了大量的时间,导致后面的题目没时间,心态也崩溃。
    

    3.2 错题2

      输入一个后缀表达式,程序求出表达式值。
    

    3.2.1代码截图


    3.2.1原因分析

      这道题错把数组看成指针,也就是这个点一直过不去,非常无奈。
    
  • 相关阅读:
    sqlserver如何查询一个表的主键都是哪些表的外键
    sql server nullif的使用技巧,除数为零的处理技巧
    如何解决数据库中,数字+null=null
    sql server truncate table 删除表数据限制条件
    eclipse需要的环境变量就两个,一个是java_home指向JDK。另一个是Tomcat,自己去preference-sever下new一个
    解释Eclipse下Tomcat项目部署路径问题(.metadata.pluginsorg.eclipse.wst.server.core mp0wtpwebapps)
    mysql登录退出命令
    代码svn下载到本地后,关于数据库问题
    MySQL配置文件详解
    mysql查看存储过程show procedure status;
  • 原文地址:https://www.cnblogs.com/lxldbk/p/10745386.html
Copyright © 2020-2023  润新知