码迷,mamicode.com
首页 > 其他好文 > 详细

博客作业03--栈和队列

时间:2018-04-14 16:22:25      阅读:266      评论:0      收藏:0      [点我收藏+]

标签:2.4   导致   git   问题   银行   情况下   应该   模拟   等于   

1.学习总结

技术分享图片

栈只能在同一端进行入栈出栈操作(FILO),而队列是在一端入队,在另一端出队(FIFO)。

查找了一些算法,灰色部分是目前还未接触过的算法

技术分享图片

2.PTA实验作业

2.1.1 题目1:字符串是否对称

2.1.2 设计思路

    定义变量X,数组a[]存放数据;
    定义变量N=0,i控制循环,记录元素个数;
    定义栈S;
    
    while 输入的X不为换行符
        令a[N]等于X,并且N自增一;
    
    以N为栈的最大容纳量创建栈S;

    for i=0 to N
        a[i]进入栈S;
    end for

    for i=0 to a[i]!=‘\0‘
        X=S出栈的数值;
        if a[i]与X不相等
        {    输出 “no”;
            返回 0;
        }
    end for

    输出 “yes”;
    返回 0;

2.1.3 代码截图

技术分享图片

2.1.4 PTA提交列表说明

技术分享图片

技术分享图片

一开始因为C/C++部分操作弄混了,修改后第二个测试点对了,但是第一个一直不对,以为是数组设置的不够大,但是在我增大到让程序运行超时时仍然不正确,也让其他同学替我看了,找不到到底错在哪,但题目给的样例能正确输出。

2.2.1 题目2:符号配对

2.2.2 设计思路

    定义栈S;
    定义自变量flag=1作为正误判断标志,i控制循环,len记录字符串长度;
    定义变量s[100000],X,e记录数据;
    
    初始化栈S;
    while(1)
    {
        输入字符串s;
        if s[0]为‘.‘并且s[1]为0 
            退出循环;
        给len赋值s的长度;
        栈S的大小Size加上len;
        for i=0 to s[i]!=‘\0‘
            if s[i]为‘/‘ 或‘[‘ 或‘{‘
                s[i]入栈;
            else if s[i]为‘/‘并且s[i+1]为‘*‘ 且 i+1<len
            {
                }
    }

2.2.3 代码截图

技术分享图片

技术分享图片

技术分享图片

2.2.4 PTA提交列表说明

技术分享图片

经过漫长的编写,测试后发现题目给的sample3输出结果不对,调试后找到了问题:我采取的是在一开始先录入所有的数据,直到收到‘.‘和‘\n‘,但是第三个样例中这样输入会导致后面的数据不能进入数组,造成结果错误,所以我改变了数据输入的方式,也的确对了,但是第六个测试点“左右符号个数相同,达到最大值,但不匹配”不明白是什么意思,也没办法找数据测试。

2.3.1 题目3:银行业务队列简单模拟

2.3.2 设计思路

    定义变量N记录总人数,n为顾客编号;
    定义变量i控制循环,na,nb为格子队列的元素数,e记录出队元素,数组a[1000]记录完成业务的顾客编号;
    定义并初始化队列QA,QB;
    输入N;
    if N>0
        循环N次,按奇偶将顾客编号放入不同的队列中;
        i=0;flag=1;
        循环N次
            if flag==1且QA不为空
                QA连续两次出队列,并将编号记录在数组a中;
                if QB不为空 flag=0;
            else
                QB出队一次,记录出队的编号;
                if QA不为空 flag=1;
        for i=0 to N-1
            输出a[i]+" "
        输出a[i]

2.3.3 代码截图

技术分享图片

技术分享图片

2.3.4 PTA提交列表说明

技术分享图片

  • 第一次提交时只有第一个测试点(题目给的样例)正确,经过调试后对代码进行了修改
    修改前:
    技术分享图片

修改后:
技术分享图片

  • 1.无论是na还是nb,当其为0时皆表示队列中没有元素存在,边界情况应该注意这一点;

  • 2.建立在上面那一点错误的情况下的错误。考虑到flag的初始值为1,而变为0是在flag==1的前提下,若是将QB出队的条件限制太多,反而不能够成功让QB队列中的元素出队。

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

3.1栈的PTA排名

技术分享图片

3.2队列的PTA排名

技术分享图片

总分:128分

4. 阅读代码

将十进制数转为任意进制的数

技术分享图片

原地址:{https://blog.csdn.net/qianqin_2014/article/details/51031090}

该段代码可将输入的十进制数转化为自定义的进制数

优点:以前做进制转化可能还要考虑输出数的顺序、考虑放入数组的顺序,但是使用栈,直接将转化后的数逐个进栈再全部出栈,不必考虑顺序的问题。一个简单的代码体现了栈的特点。

5. 代码Git提交记录截图

技术分享图片

技术分享图片

emmm...下次应该一次提交一个代码的

博客作业03--栈和队列

标签:2.4   导致   git   问题   银行   情况下   应该   模拟   等于   

原文地址:https://www.cnblogs.com/wwwwxy128/p/8734407.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!