博客作业03--栈和队列
1.学习总结
1.1 我对本周所学的逻辑结构、栈、队列、存储结构等的理解。
- 三者都是逻辑结构,各有特性。线性表是一个含有n个元素的有序序列,形成线性结构。这种结构只有一个“第一个元素”和一个“最后一个元素”,除“第一个元素”之外每个元素都有一个前驱,除“最后一个元素”之外每个元素都有一个后继。栈只允许在栈顶进行存取,有“后进先出”的特性。队列只允许在队尾存,在队首取,有“先进先出”的特性。三种结构有不同的应用。
栈:
队列:
1.2思维导图
2.PTA实验作业
2.1 题目1:jmu-字符串是否对称
2.2 设计思路
定义变量i,ch,指针变量st.
建立栈st,把输入的字符串入栈,在利用栈的“先进后出”的特性,判断正反是否相等。
不等销毁栈,返回0,相等也销毁栈,返回1。
2.3 代码截图
2.4 PTA提交列表说明
2.1 题目2:jmu-ds-舞伴问题
2.2 设计思路
首先定义一系列辅助变量int i,t,j,flag;
for i=0 to i=num-1;
先判断dancer[i].sex,再根据sex进入不同的队列
for i=0 to i=num-1;
令flag=0;判断dancer[i].sex,
如果是“F”,就利用j变量按循序找到第一个“M”的舞伴,如果是“M”,就利用j变量按循序找到第一个“F”的舞伴,找到flag=1,如果找到就输出俩者的名字。
再利用flag,判断匹配是否成功,成功就删除dancer[i]中的这俩者,并且将front++(这个纯属是为了计算没有舞伴的人数,所以没管里面的data删除是否正确,有点侥幸吧!)。
2.3 代码截图
2.4 PTA提交列表说明
2.1 题目3: jmu-报数游戏
2.2 设计思路
定义变量num,sum;//sum用来存放m的初值。
判断m是否越界,是输出error!
否,利用m来找出队列中对应的元素,把它放在队首。
判断队列中的元素个数,把队首元素出对,并输出。
2.3 代码截图
2.4 PTA提交列表说明
3.题目集的.PTA最后排名
3.1 栈PTA排名
3.2 队列PTA排名
3.3 我的总分:100+105=205.
4. 阅读代码
- lower_bound这个函数的代码是我无意中发现的,觉得很精简,是利用二分法写出的代码。函数ForwardIter lower_bound(ForwardIter first, ForwardIter last,const _Tp& val)功能:返回一个有序序列[first, last)中第一个值【大于或等于】val的元素的位置。有了这个函数使得在写7-4 列车调度的题时,大大缩减了代码量。
- 同时介绍ForwardIter upper_bound(ForwardIter first, ForwardIter last, const _Tp& val)功能:返回一个有序序列[first, last)中第一个值【大于】val的元素的位置。