博客作业03–栈和队列

博客作业03–栈和队列

1.学习总结(2分)

1.1 写出你认为本周学习中比较重要的知识点关键词

本章主要学习了栈的顺序储存结构及其基本运算的实现,还有就是栈的链式结构。
其中,包含了进站,出栈等一系列的基本操作,栈这章,还学会一个比较重要的就是
将中缀表达式转成后缀表达式,和迷宫找出路。
队与栈的最大不同点就是:栈是先进后后出,而对是先进先出,队中还有一个较为特别
就是循环队,通过队可以找到迷宫的最短路径,同样队用于一些报数问题的解决也是非常的方便。

2.PTA实验作业(4分)

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

2.2 设计思路(伪代码或流程图)

首先先利用数组a顺序的存放字符串,
同时将这些字符串进栈。
while(top>字符串长度的一半时){

if(栈顶元素=a[i]){

出栈 ,i++;
else 返回错误;
}

2.3 代码截图(注意,截图、截图、截图。代码不要粘贴博客上。不用用···语法去渲染)

主函数:
1233828-20180414112352235-1725774989.png

进栈与判断函数:
1233828-20180414112501610-271290953.png

2.4 PTA提交列表说明。

1233828-20180414112805613-1764909519.png

7-1 jmu-报数游戏(15 分)

2.2 设计思路(伪代码或流程图)

将所有的数字按顺序进队
for( int i=1 ; NumOff.size() > 1 ; i++ )
if(i对m取余==0) 输出队顶元素,出队。
else{

记录队顶元素,让队顶元素出队再进队。
}

2.3 代码截图(注意,截图、截图、截图。代码不要粘贴博客上。不用用···语法去渲染)

1233828-20180414114831440-1474198280.png

2.4 PTA提交列表说明。

1233828-20180414115008186-735954601.png

之前,我是选择用循环队来做的,结果很绕,当时这题绕了很久,做了那么久也就是m>n的那个点对了,
思路是让队顶和队尾后移,直到m处,出队并打印。直到队尾空。当初是这个思路可惜没有实现。

7-3 银行排队问题之单队列多窗口服务(25 分)

2.2 设计思路(伪代码或流程图)

先让所有的人排成一只队伍,
定义数组a[k]表示窗口,初始化窗口=0;
while(队位空){

for(i=0 to i=k){

寻找最小那个窗口的下标,说明这个窗口的人最快结束。
记为L
}
出队 对头
if(队头的人的到达时间t>a[L],说明此人不用排队)
让此人进入此窗口,a[L]=此人来的时间加上操作的时间.
else {

说明此人需要等待
wait 记录等待时间,
在让此人进入窗口
a[L]=a[L]+操作的时间。
}//就这两种情况。
}
}

2.3 代码截图(注意,截图、截图、截图。代码不要粘贴博客上。不用用···语法去渲染)

主函数:

1233828-20180414220819590-1302445487.png

1233828-20180414220918149-1913045591.png

其他进出队的函数:
1233828-20180414221015112-596494829.png

2.4 PTA提交列表说明

1233828-20180414221110874-1019810516.png

第一次错误:
1233828-20180414221201039-181594957.png

这次的错误主要是:假设在1号和2号都空闲的时候,而此时2号窗口的时间更小,按照以上思路会选择2号窗口,
然而题目要求,在窗口都能够选择的时候,应该选择窗口号较小的。所以问题出在这,
改正方法是:在寻找窗口时间最小的for 循环中 加入一条判断 if(此时客户到达的时间>此窗口的时间)退出这个循环。

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

3.1 栈PTA排名

1233828-20180414222105165-855635131.png

3.2 队列PTA排名

1233828-20180414222227961-738120131.png

3.3 我的总分:205

4. 阅读代码(必做,1分)

 void algo3(Queue &Q){
    Stack S;
    int d;
    InitStack(S);
    while(!QueueEmpty(Q))
    {
        DeQueue(Q, d);
        Push(S, d);
    }
    while(!StackEmpty(S)) {
        Pop(S, d);
        EnQueue(Q, d);
    }
}

此代码是将队与栈巧妙的结合来将,线性表倒序,
充分的利用了队与栈的不同行。

5. 代码Git提交记录截图

转载于:https://www.cnblogs.com/1028-zwj/p/8824958.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/101719.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Windows进程间通信—命名管道

    命名管道是通过网络来完成进程间的通信,它屏蔽了底层的网络协议细节。我们在不了解网络协议的情况下,也可以利用命名管道来实现进程间的通信。与Socket网络通信相比,命名管道不再需要编写身份验证的代码。将

    2021年12月27日
    47
  • Qt是什么?Qt简介(非常全面)

    Qt是什么?Qt简介(非常全面)Qt是什么?Qt简介(非常全面)Qt(官方发音[kju:t],音同cute)是一个跨平台的C++开发库,主要用来开发图形用户界面(GraphicalUserInterface,GUI)程序,当然也可以开发不带界面的命令行(CommandUserInterface,CUI)程序。Qt是纯C++开发的,所以学好C++非常有必要,对于不了解C++的读者,我建议先阅读《C语言教程》,再阅读《C++教程》。C++是在C语言的基础上发展起来的,学完C语言就学了C++的一半了。Q

    2022年5月13日
    61
  • windows下nginx启动一闪而过(原因以及查看和解决的办法)「建议收藏」

    windows下nginx启动一闪而过(原因以及查看和解决的办法)「建议收藏」解决问题的思路清晰比确切解决的办法更加有效原因:这是80端口被占用的缘故,修改下端口即可。得出此原因的方法:运行“nginx.exe”文件即可,运行后,界面一闪而过。这是查看log日志,就能得到原因2018/08/2321:43:34[emerg]16612#13696:bind()to0.0.0.0:80failed(10013:Anatt…

    2022年10月23日
    0
  • MeasureSpec介绍及使用详解

    MeasureSpec介绍及使用详解一个MeasureSpec封装了父布局传递给子布局的布局要求,每个MeasureSpec代表了一组宽度和高度的要求。一个MeasureSpec由大小和模式组成。它有三种模式:UNSPECIFIED(未

    2022年7月1日
    19
  • Swing程序设计(简易文本编辑器数据结构课设)

    Java课程设计-基于Swing的文本编辑器1.介绍2.相关技术3.项目地址4.所需环境5.安装教程6.运行截图7.相关博客1.介绍设计一个类似于Windows记事本(Notepad)的Java程序。可以打开、新建、保存一个文本文件;对选中的文本进行各种编辑操作(设置字体、字号、字型、对齐方式、背景、前景色、复制、粘贴、剪切等);在文本中能够插入对象。2.相关技术Java的Swing编程Java的文件读写3.项目地址https://gitee.com/jack0240/text-edi

    2022年4月13日
    38
  • angular5面试题_大数据面试题

    angular5面试题_大数据面试题Angular更新还是非常快的,目前(2020)的速度是每年2个主版本。网上也有不少面试题,不过很多都是针对老的版本,尤其是AngularJS的。因为最近在看Angular的面试题,所以特意总结一下。下面内容都是基于Angularv8.0以上的。顺便科普一下,Angular最早期的版本,也叫AnugularJS,使用javascript开发;新的版本,才叫Angular,也称为Angular2,使用typescript开发,Angular和AngularJS是不兼容的(当然也有2个版本的集成方案)。

    2022年10月18日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号