zoukankan      html  css  js  c++  java
  • DS博客作业03--栈和队列

    1.本周学习总结

    • 1. 感觉栈和队列难度很大,特别是表达式求值还有符号配对,这真心很困难,打PTA打的特别心塞,都不会啊,而且编程量大,需要考虑的东西很多,光是看书就看得头晕,看了很久才会懂点,好在有老师介绍的容易,通过两个头文件#include和#include两个头文件,接下去再进行入栈出栈入队出队操作时候会方便些,但是还是得细心些,比如top和pop的区别,一个只取栈顶不去栈顶,另一个则相反
    • 2. 一开始老师刚讲栈时候...我一直把栈听成...寨...。栈是遵循“先进后出”原则,而且进出栈只能是从栈顶进行操作,队列和栈有点不一样,队列就像现实生活中的排队,从队头出队,从队尾进入,符合先进后出原则。两者都作为线性结构,有着异同点,栈和队列两者在进行插入和删除上时间复杂度都是O(1),在空间复杂度上两者也一样,插入的操作都被限制在栈顶或者队尾也就是尾部。两者不同于删除元素的位置不同,栈的删除在栈顶,队列的删除则在队头。还有应用场景的不同:栈用于括号问题还有表达式的转换和求值,深度搜索,函数的调用和递归等。而队列用于计算机系统中各种资源的管理,消息缓冲器和广度优先搜索等等

    2.PTA实验作业

    2.1.题目1:6-2 在一个数组中实现两个堆栈

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

    2.1.2代码截图


    2.1.3本题PTA提交列表说明。

    • Q1:一开始各种错误,主要是段错误和答案错误,代码思维上...好像是没错的
    • A1:我初始化栈时候,将两个栈的Top分别置为0和1,然后也没注意看懂题目的意思,以为两个栈是是以奇数偶数来区别,就以这种形式来初始化栈,还连空栈,栈满情况的条件考虑得好好的
    • Q2:后来舍友跟我说,书本上有代码,我就看着书本打一遍代码,然后还是有错,只不过全变成输出超限这个错误
    • A2:这输出超限是因为我栈满条件的判断错误,我一开始以为栈满的条件是Top1等于Top2,这样子错误了,如果真的这样子的话他们就会有个空间进行重复了,而正确的栈满判断条件应该是Top1是等于Top2减一,这样子才正确
    • Q3:改进了栈满条件后,再提交PTA后还是输出超限的问题,栈空的判断条件我也错了
    • A3:栈空条件我以为是只要任何一个为栈空的情况,都得返回ERROR,所以其实这样谈房子栈空情况下他还是继续进行操作,后来我改进代码,在判断条件为空情况下,将他们分开来判断,

    2.2.题目2:6-12 jmu-ds-舞伴问题

    假设在周末舞会上,男士和女士们分别进入舞厅,各自排成一队。跳舞开始,依次从男队和女队队头各出一人配成舞伴,若两队初始人数不同,则较长那一队未配对者等待下一轮舞曲。现要求写一算法模拟上述舞伴配对问题。 你需要用队列操作实现上述算法。请完成下面5个函数的操作。
    

    2.2.2代码截图

    这道题只提交这三个函数 PTA也能过得去


    2.2.3本题PTA提交列表说明。

    • Q1:一开始答案和PTA的正确答案差了一格 就是跳过了张1 王2 直接输出林1 薛2
    • A1:我在将女性的姓名每一个字符存进去的for循环中,我还将rear队尾每次都给自增了,导致他最后输出错误答案。后来的编译错误是因为我不注意在cout中又加了个cout,导致编译错误,还有本来想用C语言中的赋值函数,没想到头文件中没有string
    • Q2:在多种错误中,有运行超时和答案错误
    • A2:在输出舞伴的while循环中,我判断条件为i小于等于人数少的那个,这样就导致输出超时了,因为队列中最多含有(MAXSIZE-1)个元素,在临界条件下他就没有相应的数来输出,才导致错误,格式错误是因为题目要求两个空格来隔开,可我只用一个空格

    2.3.题目3:7-2 jmu-ds-符号配对

    假设表达式中允许包含3种括号:圆括号、方括号和大括号。即(,[,'{'。编写一个算法判断表达式中的括号是否正确配对, 要求利用栈的结构实现。
    

    2.3.1设计思路

    先遍历字符串str,遇到左括号就入栈st,碰到右括号就先判断栈st是否为空,栈空则证明缺少左符号返回false,如果栈不空则取栈顶字符于e,如果不匹配右符号则将flag置为0。遍历完字符串,如果此时栈空并且flag为1,则返回true,不为空则按要求操作
    
    

    2.3.2代码截图

    2.3.3本题PTA提交列表说明。

    • Q1:一开始有个多种错误,里面有段错误还有答案错误
    • A1:我最后判断栈空的条件时候,忘记如果栈空的话返回的是1而栈不空返回的则是0,我就用!st.empty()来判断栈空,导致了错误
    • Q2:后面还有五分没能拿到,错误为括号不匹配 栈空的测试点过不去
    • A2:在遇到右符号时候,忘记了得先判断栈是否为空,栈空则错误则返回

    2.3.题目4:7-6 银行业务队列简单模拟

    设某银行有A、B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍 —— 即当A窗口每处理完2个顾客时,B窗口处理完1个顾客。给定到达银行的顾客序列,请按业务完成的顺序输出顾客序列。假定不考虑顾客先后到达的时间间隔,并且当不同窗口同时处理完2个顾客时,A窗口顾客优先输出。
    

    2.3.1设计思路

    定义数组a来存放输入的数,通过sum来记录下奇数的最后一个数的位置,遍历整个数组,如果为奇数输出,还有控制空格的输出,k自增来计算奇数有几个 ,如果是偶数则入队列,判断k是否等于2或者i大于sum值 如果满足其一,再判断sum值是否等于初值,是则输出队头并将sum置为-2 否则控制输出 并将k重新计数
    
    

    2.3.2代码截图

    2.3.3本题PTA提交列表说明。

    • Q1:一开始答案错误,一份也没有,还有后面只过了个测试点得了十五分
    • A1:起初忘记了每次输出完k要置为0,导致错误,而后面输出的判断条件少了一句,i大于sum的情况,也就是k不等于2情况下 但还有数没输出
    • Q2:还有些编译错误,那是粗心造成的
    • A2:判断条件中因为括号有点多,所以少加了个括号,也没去注意就直接提交PTA导致编译错误

    3、栈和队列上机考试

    3.1.1 题目 6-2 jmu-ds-舞伴问题

    假设在周末舞会上,男士和女士们分别进入舞厅,各自排成一队。跳舞开始,依次从男队和女队队头各出一人配成舞伴,若两队初始人数不同,则较长那一队未配对者等待下一轮舞曲。现要求写一算法模拟上述舞伴配对问题。 你需要用队列操作实现上述算法。请完成下面5个函数的操作。
    
    
    

    3.1.2 代码截图



    3.1.3 错误原因 :

    这是编译错误  我忘记了这是个void型的函数 还打算return个值 把这条删掉就可以了
    

    答案错误   在输出的函数内 只将某一个队头给自增,另外一个没自增,导致输出错误,这没考试前我也有这样错误过...
    
    

    3.2.1 题目 6-3 jmu-ds-表达式求解

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

    3.2.2 代码截图


    3.2.3

    错误原因 :

    再存十位数的时候出错了,第一个不能进去再存进去,而且还要先出栈,再将这个十位数存进去
    
    改进代码
    ![](https://img2018.cnblogs.com/blog/1474614/201904/1474614-20190421213359737-1145915857.png)
    
    错误原因 :
    

    再判断除数为0的情况错了,把除数和被除数搞混了

    改进代码
    ![](https://img2018.cnblogs.com/blog/1474614/201904/1474614-20190421213643716-1239883074.png)
    
    
    ##3.4 学习体会
    + **1.** 上机考还是难度大,有些题目是PTA原题打的时候还是会一脑子懵逼,还有运用容器会简单点,取栈顶去栈顶会方便容易点
    + **2.**有些时候得考虑详细点,有时候就是细节问题,比如表达式求值这一题,应考虑到被除数为0情况的提示和排除,当遇到运算符号时,要出栈两个数,打得还是不够熟练,原题还是会出错
    
    ***
  • 相关阅读:
    POJ 3630 Phone List/POJ 1056 【字典树】
    HDU 1074 Doing Homework【状态压缩DP】
    POJ 1077 Eight【八数码问题】
    状态压缩 POJ 1185 炮兵阵地【状态压缩DP】
    POJ 1806 Manhattan 2025
    POJ 3667 Hotel【经典的线段树】
    状态压缩 POJ 3254 Corn Fields【dp 状态压缩】
    ZOJ 3468 Dice War【PD求概率】
    POJ 2479 Maximum sum【求两个不重叠的连续子串的最大和】
    POJ 3735 Training little cats【矩阵的快速求幂】
  • 原文地址:https://www.cnblogs.com/zwl-/p/10741539.html
Copyright © 2011-2022 走看看