DS博客作业03—栈和队列
1.本周学习总结
本周学习了栈和队列两种数据结构,分别对应后进先出,先进先出两种数据操作
学会栈的特殊类型—共享栈,队列的特殊类型—循环队列的一系列操作
学会熟练使用栈和队列的STL容器,使代码简洁
2.PTA实验作业
2.1 在一个数组中实现两个堆栈
本题要求在一个数组中实现两个堆栈
2.1.1 设计思路
函数题省略
2.1.2 代码截图
2.1.3 PTA提交列表及说明
读主函数时没有注意到pop()函数返回值在后继有使用,直接省略了返回值,编译错误
没理解错误原因随便写了个return 0,答案错误
重新读了一遍主函数发现需返回出栈元素
2.2 另类循环队列
如果用一个循环数组表示队列,并且只设队列头指针Front,不设尾指针Rear,而是另设Count记录队列中元素个数。请编写算法实现队列的入队和出队操作
2.2.1 设计思路
函数题省略
2.2.2 代码截图
2.2.3 PTA提交列表及说明
一次过,这题主要考察循环队列没有尾指针的情况下的进栈方法,对以后的复习有帮助
2.3 报数游戏
报数游戏是这样的:有n个人围成一圈,按顺序从1到n编好号。从第一个人开始报数,报到m(m<n)的人退出圈子;下一个人从1开始报数,报到m的人退出圈子。如此下去,直到留下最后一个人。其中n是初始人数;m是游戏规定的退出位次(保证为小于n的正整数)。要求用队列结构完成。输出数字间以空格分隔,但结尾不能有多余空格。
2.3.1 设计思路
定义人数n,数字m
if (m>n) //不合法情况
输出error!
返回
if end
for i=1 to n
1至n循环进队
for end
while(队列不为空)
i++;
if (i==m) //报到m,输出,出队
输出队头
i=0
else //队列循环
temp=队头
队头出队
temp进队
if end
while end
2.3.2 代码截图
2.3.3 PTA提交列表及说明
一次过,在这题学到了使用队列STL实现循环队列,对以后的复习有帮助
2.4 符号配对
请编写程序检查C语言源程序中下列符号是否配对:/与/、(与)、[与]、{与}。
2.4.1 设计思路
while(1) //循环输入
getline(cin, str); //一行代码读入str
if str[1]=='.' //跳出循环
break
for i=0 to str[i]='\0' //遍历str
if str[i] 是左符号
进栈,str[i]=/*是进栈'a'
else if str[i] 是右符号
if 栈空
输出?-右符号
if 配对
出栈
else
输出 栈顶-?
for end
while end
if 栈不空
输出 栈顶-?
else
输出 yes
2.4.2 代码截图
2.4.3 PTA提交列表及说明
这题由于string不熟偷懒一直放着没去做,直到考试中奖
考试时现学了上一题的getline()函数做字符串输入,由于没注意getline()只能输入一行,各种错误
用循环输入解决了大部分问题,然而还有一个测试点不能通过(真的找不到了)
3.栈和队列上机考试
3.1 表达式求解
输入一个后缀表达式,程序求出表达式值
3.1.1 代码截图
3.1.2 错误分析
负数部分没有考虑进去
3.2 列车调度
两端分别是一条入口(Entrance)轨道和一条出口(Exit)轨道,它们之间有N条平行的轨道。每趟列车从入口可以选择任意一条轨道进入,最后从出口离开。在图中有9趟列车,在入口处按照{8,4,2,5,3,9,1,6,7}的顺序排队等待进入。如果要求它们必须按序号递减的顺序从出口离开,则至少需要多少条平行铁轨用于调度?
3.2.1 代码截图
3.2.2 错误分析
这题在考试的时候完全没想出来要怎么用栈或队列的内容解决
看了晓淞同学的博客之后发现了STL中的set可以极快的解决这题,顺手学习了set的相关操作
PS:晓淞博客中没讲清楚的地方(我看代码看得一脸懵逼的地方)
晓淞博客原文
upper_bound()找不到对应值时返回的是end()
end()返回的是最后一个元素的后一个元素(不存在的值)而不是最后一个元素
实际演示:在测试end函数的用法时出现的情况
倒序输出set中的元素,然后输出时发现了个不对的东西
换成vs试了一下,直接崩了
查了一堆博客后终于找到原因
DS博客作业03—栈和队列的更多相关文章
- DS博客作业03——栈和队列
1.本周学习总结 谈谈你对栈和队列结构的认识及学习体会. 栈和队列的本质就是线性表.所以,相应的栈跟队列都有两种存储结构:顺序存储结构.链式存储结构. 栈的特点是后进先出,根据栈时进时出的规则,出栈的 ...
- 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.栈 栈是重要且常用的数据结构之 ...
随机推荐
- tomcat+servlet例子
在C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps\app\WEB-INF文件夹下建立文件夹classes. 在C:\Pro ...
- OneZero第三周第五次站立会议(2016.4.8)
1. 时间: 15:10--15:25 共计15分钟. 2. 成员: X 夏一鸣 * 组长 (博客:http://www.cnblogs.com/xiaym896/), G 郭又铭 (博客:http ...
- mybatis @SelectKey加于不加的区别
正常情况下,我们设置表的主键自增,然后: @Insert("insert into miaosha_order (user_id, goods_id, order_id)values(#{u ...
- [网络]10M、100M、1000M网线的水晶头接法
在网络维护过程中经常要自己制作网线,水晶头理论上是这样接的: 10M和100M和1000M以太网在使用网线时,对网线各自有不同的要求. 10M和100M在目前来说,连接网络的时候,只用到两对线来传输网 ...
- Neural Network Basics
在学习NLP之前还是要打好基础,第二部分就是神经网络基础. 知识点总结: 1.神经网络概要: 2. 神经网络表示: 第0层为输入层(input layer).隐藏层(hidden layer).输出层 ...
- JSON.parse和JSON.stringify的区别
JSON.stringify()的作用是将 JavaScript 值转换为 JSON 字符串, 而JSON.parse()可以将JSON字符串转为一个对象. 简单点说,它们的作用是相对的,我用JSON ...
- C# AOP框架入门(转)
出处:https://www.cnblogs.com/isaboy/p/Csharp_AOP_Log.html AOP面向切面编程(Aspect Oriented Programming),是通过预编 ...
- 重启服务器后,启动oracle监听报错 The listener supports no services The command completed successfuslly
启动监听报错如下图所示: 远程连接报错如下图所示: 问题原因:数据库实例没注册到listener中 解决方法: (1)登录数据库:$sqlplus / as sysdba (2)显示服务名:sql& ...
- maven的传递性依赖
一.概念: 假如有maven项目A,项目A依赖项目B,项目B依赖项目C,我们说A对B是第一直接依赖,B对C是第二直接依赖,那么他们的依赖关系:A---->B----->C,那么我们执行项目 ...
- es6 字符串方法
1.字符串的新方法 includes() 包含属性 startsWith() 头部开始是否包含 endWith() 字符串是否在尾部 ========三个返回值都为布尔值 第二参数为数字 e ...