zoukankan      html  css  js  c++  java
  • 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原因分析

      这道题错把数组看成指针,也就是这个点一直过不去,非常无奈。
    
  • 相关阅读:
    DC中为什么要用Uniquify?
    hdu 1596 find the safest road
    hdu2112 HDU Today
    hdu 2066 一个人的旅行
    poj 3026 Borg Maze
    poj 1979 Red and Black
    poj 1321 棋盘问题
    hdu 1010 Tempter of the Bone
    hdu 4861 Couple doubi
    codeforces584B Kolya and Tanya
  • 原文地址:https://www.cnblogs.com/lxldbk/p/10745386.html
Copyright © 2011-2022 走看看