DS博客作业03——栈和队列
1.本周学习总结
谈谈你对栈和队列结构的认识及学习体会。
栈和队列的本质就是线性表。所以,相应的栈跟队列都有两种存储结构:顺序存储结构、链式存储结构。
栈的特点是后进先出,根据栈时进时出的规则,出栈的顺序可以跟入栈顺序不不同,而队列的特点则是先进先出,入队的顺序是怎样的那么出队的顺序就是怎样的。与线性表相同,栈和队列的顺序存储结都会有空和满两种情况,而链式存储结构相应的也是一般不用考虑满的情况。在学习迷宫问题时,栈和队列同样可以解决迷宫问题,不过栈是深度搜索,找到的迷宫路径不一定的最短路径,而队列则是广度搜索,找到的路径一定是最短路径。
在学完一个个进栈、出栈、入队、出队……的函数之后,我们又学了C++中的两个类:stack、queue,原本自己手打函数,一大段一大段的代码,只要一行就可以解决了。不过因为这两个类都是链式存储,出栈、出队完,那些出栈、出队的数据就没了,所以这两个类并不是所有时候都适用的,所以该自己手打代码的时候还是得自己打。
2.PTA实验作业
本周要求挑4道题目写设计思路、调试过程。题目选做要求:
- 栈、队列函数题目分别选择1题
- 栈、队列编程题分别选择1题
2.1 题目1:在一个数组中实现两个堆栈
本题要求在一个数组中实现两个堆栈。
函数接口定义:
- Stack CreateStack( int MaxSize );
- bool Push( Stack S, ElementType X, int Tag );
- ElementType Pop( Stack S, int Tag );
2.1.2 代码截图
2.1.3 本题PTA提交列表说明
- Q1:做这道题的时候,老师在课上已经讲过了,所以提交列表里就两行,那为什么还会出现编译错误呢?
- A1:那时候我还以为是一遍过的,结果一提交,编译错误,看了眼PTA的报错,好吧,老毛病又犯了,总把MaxSize当作是全局的常数,然后用到它的时候,直接就把MaxDize赋值给谁谁谁,忘记了结构体调用。
2.2 题目2:jmu-ds-舞伴问题
假设在周末舞会上,男士和女士们分别进入舞厅,各自排成一队。跳舞开始,依次从男队和女队队头各出一人配成舞伴,若两队初始人数不同,则较长那一队未配对者等待下一轮舞曲。现要求写一算法模拟上述舞伴配对问题。 你需要用队列操作实现上述算法。请完成下面5个函数的操作。
函数接口定义:
- int QueueLen(SqQueue Q);//队列长度
- int EnQueue(SqQueue &Q, Person e);//加入队列
- int QueueEmpty(SqQueue &Q);//队列是否为空
- int DeQueue(SqQueue &Q, Person &e);//出队列
- void DancePartner(Person dancer[], int num); //配对舞伴
Q:队列
e:参加舞会的人
dancer:全部舞者
num:参加舞会的人数
2.2.2 代码截图
2.2.3 本题PTA提交列表说明
这道题看提交列表没用,我是在vs上调试完,能运行正确了才复制提交的
- Q1:一开始的时候,不太会写,发现要写的函数没有用在给出的main()函数中
- A1:然后想着先把那些基础的函数写完,写的时候还纠结了一下队空、队满的情况要不要分类讨论,写完了之后,才发现这些函数好像是用在DancePartner()函数中
- Q2:然后就开始纠结,为什么没把队列传参,就自己设了两个队列在DancePartner()函数中
- A2:把所有的都写完了之后,运行了一下,结果运行时出错了,于是就又看了一遍题目给出的那段代码,发现题目中已经设了两个队列,然后因为传参没有传队列进去,我就不知道该怎么写,然后想想,算了,直接在DancePartner()函数中用吧,把我自己设的那两个队列换成题目中的那两个之后,他能运行了,而且还是正确代,提交了一些就过了。
2.3 题目3:jmu-字符串是否对称
编写一个算法利用顺序栈判断一个字符串是否是对称串。所谓对称串是指从左向右读和从右向左读的序列相同。
2.3.1 设计思路
定义两个链栈:s1、s2,s1用来储存字符串,利用栈的后进先出的特点,将s1中一半的字符从栈顶出栈,传入s2中(如果字符串为奇数,多出栈一次,不传入s2中)。把两个栈的栈顶进行比较,相同,两个栈同时出栈,继续比较当前栈顶,以此类推;若不相同,则说明该字符串不是对称串。
2.3.2 代码截图
2.3.3 本题PTA提交列表说明
这题其实挺简单的,当时舍友问我这道题怎么做的时候,我还没写,看了眼题目,然后瞬间就想到了这种做法,提交后一遍过的事实证明,这个做法是可行的。把这题写入博客园也不是因为这题有多难多难,只是想记住一种思路(因为我经常做题时可能有很多觉得不错的想法、思路,但是随着题目的完成,这些当时挺不错的思路也跟着消失了,写到博客园中,以后再看的时候,可能就会有,欸,还有这种做法的感觉)
2.4 题目4:银行业务队列简单模拟
设某银行有A、B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍 —— 即当A窗口每处理完2个顾客时,B窗口处理完1个顾客。给定到达银行的顾客序列,请按业务完成的顺序输出顾客序列。假定不考虑顾客先后到达的时间间隔,并且当不同窗口同时处理完2个顾客时,A窗口顾客优先输出。
2.4.1 设计思路
定义两个队列,q1、q2,根据队列先进先出的特点,在输入的过程中,将奇数的存放在q1中,偶数的存放在q2中,由于A窗口优先输出,则在输出时当q1不为空的情况下,先输出一个奇数,再判断q1是否为空,输出一个奇数,在q2不为空的情况下再输出一个偶数。
2.4.2 代码截图
2.4.3 本题PTA提交列表说明
- Q1:当时看到题目,欸,超简单,不就输出两个奇数,在输出一个偶数嘛,然后……就错了(在vs上运行的时候)
- A1:后面仔细想了想,不对,万一A窗口的人数不是偶数呢,于是在第二次出队前又加上了一个判断语句
- 所以说,不要因为一个题目看着简单,就不怎么思考,还是要好好考虑题目中是不是有什么坑
3.栈和队列上机考试
错题及解决办法
截图错题代码,分析错误原因及后续要改进地方。请至少列举2题。如果拿满分同学,这部分可不写,直接拿3分。
注意:分析错误原因及体会,主要讲代码错误。
错题一
- 错误分析
当时上机考试的时候,看到这道题,想都没怎么想,直接选B,因为之前做过的题目,都是说长度为m的队列,出队时的操作,那不就是front =( front +1)%m了嘛,然后考完了之后一看,emmmmm,我这题怎么错了,再一看,好吧人家是数组A[0..m],总共m+1个数……所以答案选D:front =( front +1)%(m+1) - 体会
所以说,不要觉得题目看着眼熟,然后就想当然,之前就真么做的,那这题也就这样的,还是要认真的审题!审题!审题!
错题二
- 错题分析
上机考试的时候,一看到这道题,心里瞬间一慌,然后……脑袋一片空白,不知道这种题该怎么做,记得当时我是把运算符也给入栈了,也不知道怎么算的,反正就算了个5。后来,考试完了,脑袋清醒了,再看这道题……怎么这么简单,我当时在想什么,为什么要把运算符也给入栈了(当事人就是非常的后悔.jpg) - 体会
上机考试的时候,出现大脑空白的情况,也只能说明我对这一部分掌握的并不如我想象中的牢固,很多知识点我基本都是一遍过,当时懂了,如果题目没出现,基本不会再去过问的那一种,这种习惯是真的不好,(虽然到现在都还没改过来)不过借着写博客园再把这题过一遍,加深一些印象
小结
这次上机考试呢,发现自己时间完全不够用,只做了选择题,和函数题,编程题一道都没写(连提交记录都没有的那种),所以错题只写了两道选择题(我写了的题目中就错了这两道)
时间不够用呢,主要是有一下两点:一、做过的题目不熟练,还是会有各种小错误;二、上机考试前,PTA里的题没打完,对题目没印象,直接现场打代码+调试,再加上那个不太熟练,以至于时间花费过多。这就导致了后面的题目做不完的情况。PTA没去打我认错,最近各种练习赛比较多,题目又难,往往打完比赛之后就不会想再去碰代码,看到PTA就不想动,以至于PTA作业一拖再拖。不过既然这种消极的心态影响到了我,那我就应该调整好自己的状态,毕竟学习更重要。
DS博客作业03——栈和队列的更多相关文章
- DS博客作业03—栈和队列
1.本周学习总结 本周学习了栈和队列两种数据结构,分别对应后进先出,先进先出两种数据操作 学会栈的特殊类型-共享栈,队列的特殊类型-循环队列的一系列操作 学会熟练使用栈和队列的STL容器,使代码简洁 ...
- DS博客作业08--课程总结
DS博客作业08--课程总结 1.当初你是如何做出选择计算机专业的决定的? 1.1 经过一年学习,你的看法改变了么,为什么? 1.2 你觉得计算机是你喜欢的领域吗,它是你擅长的领域吗? 为什么? 1. ...
- DS博客作业04--图
这个作业属于哪个班级 数据结构--网络2011/2012 这个作业的地址 DS博客作业04--图 这个作业的目标 学习图结构设计及相关算法 姓名 黄静 目录 0.PTA得分截图 1.本周学习总结 1. ...
- DS博客作业——树
DS博客作业--树 1.本周学习总结 1.思维导图 2.谈谈你对树结构的认识及学习体会. 在树这一章节,我们学习的是二叉树的算法. 树的构建:一种是直接给树的顺序存储结构的字符串,一种是通过先序遍历和 ...
- DS博客作业05--查找
这个作业属于哪个班级 数据结构--网络2011/2012 这个作业的地址 DS博客作业05--查找 这个作业的目标 学习查找的相关结构 姓名 黄静 目录 0.PTA得分截图 1.本周学习总结 1.1 ...
- DS博客作业03--树
这个作业属于哪个班级 数据结构--网络2011/2012 这个作业的地址 DS博客作业03--树 这个作业的目标 学习树结构设计及运算操作 姓名 黄静 目录 0. PTA得分截图 1. 本周学习总结 ...
- DS博客作业--07查找
目录 DS博客作业--07查找 1.本周学习总结(0--2分) 1.思维导图 2.谈谈你对查找运算的认识及学习体会. 2.PTA实验作业(6分) 2.1.题目1:6-1 二叉搜索树的操作集 (30 分 ...
- DS博客作业--课程总结
1.当初你是如何做出选择计算机专业的决定的? 经过一年学习,你的看法改变了么,为什么? 你觉得计算机是你喜欢的领域吗,它是你擅长的领域吗? 为什么? 刚开始填报志愿的时候,因为我个人是没有什么比较特别 ...
- DS博客作业03--栈和队列
1.本周学习总结 本周学习中学习了栈和队列,栈和队列都属于线性结构,栈和队列不同于线性表的地方在于它们的相关运算具有一些特殊性,所以栈和队列也称为操作受限的线性表. 1.栈 栈是重要且常用的数据结构之 ...
随机推荐
- 解决Linux 环境 GLIBCXX_3.4.15' not found问题
升级Centos系统之后,运行filezilla时,出现如下错误的提示信息: ./filezilla: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.15 ...
- Wireshark使用介绍(二):应用Wireshark观察基本网络协议
TCP: TCP/IP通过三次握手建立一个连接.这一过程中的三种报文是:SYN,SYN/ACK,ACK. 第一步是找到PC发送到网络服务器的第一个SYN报文,这标识了TCP三次握手的开始. 如果你找不 ...
- 新疆大学ACM-ICPC程序设计竞赛五月月赛(同步赛)A Red Rover
题目链接 大概意思就是,找出一个字串,将其所有出现的地方替换成一个字母M后的长度len1,然后再加上这个字串的长度t_len得到一个新的长度len,求这个len最小等于多少. 当然,也可以不找这个串, ...
- Gatling实战(三)
无论是性能测试还是自动化测试,有一个很重要的点就是变量(参数化),因为真实环境是很少同时产生并发很高而且所有参数都一模一样的请求的,就算有这样的接口,开发肯定用缓存来挡了,这种一般不会是瓶颈,真正瓶颈 ...
- IDEA修改显示星号*和热部署
IDEA修改显示*星号: IDEA热部署: 两步: 1. 2. Ctrl+Alt+Shift+/ 打开下面界面,选Registry 对于Springboot应用,可能无法启动,在上述两步不起作用的情况 ...
- style1
<!doctype html> 我的简历 基本信息 姓名 张三 性别 男 应聘职位 WEb前端工程师 联系方式 手机 12312341234 Email joinefe@baidu.com ...
- Java基础学习-关键字的概述和特点以及常量的概述和分类
1.关键字概述 -被Java语言赋予特定含义的单词 2.关键字的特点 -组成关键字的字母全部小写 -常用的代码编辑器,针对关键字有特殊的颜色标记,非常直观,所以我们不需要死记硬 ...
- JVM即时编译器
为何HotSpot虚拟机要使用解释器与编译器并存的架构? 为何HotSpot虚拟机要实现两个不同的即时编译器? 程序何时使用解释器执行?何时使用编译器执行? 哪些程序代码会被编译为本地代码?如何编译为 ...
- 使用Mongo进行分页
MongoDB’s pipeline aggregation is – like most things in application development these days – confusi ...
- Dingo 的安装
安装Dingo需要下面的环境: Laravel 5.1 或 lumen 5.1 + php 5.59+ 1. 修改composer.json 文件,添加下面的代码: "require&quo ...