博客作业03--栈和队列
1.学习总结
2.PTA实验作业
2.1 题目1: 银行业务队列简单模拟
2.2 设计思路:
定义两个队列A,B
输入N位顾客的编号,奇数编号入队A,偶数编号入队B
while(A和B都不为空)循环两次输出A的队头元素,然后出队输出B的队头元素,然后出队
whileB不为空如果B的大小为1输出队头元素,然后出队否则输出队头元素后加空格,然后出队
whileA不为空如果A的大小为1输出队头元素,然后出队否则输出队头元素后加空格,然后出队
2.3 代码截图:
2.4 PTA提交列表说明
部分正确:错误点卡在A.B队列一起输出完还有队列中有元素的情况,原来的思路比较麻烦,后来经过舍友提示通过判断队列里元素个数是否是一个来实现最后一个元素不带空格
2.1 题目2:jmu-报数游戏
2.2 设计思路:
输入 n , m //退圈数和总人数
if n>mError结束程序
end
定义队列 q, 将m个人入队
int i= 1 //报数
while q.size()!=1 if( i%n==0 ||q.size()<n)输出本轮退圈的人的编号else 将队首放到队尾i++
end
输出最后一个人的编号
2.3 代码截图:
2.4 PTA提交列表说明
编译错误:一开始有一步忘记将元素出队,导致编译错误无法运行
2.1 题目3:银行排队问题之单队列多窗口服务
2.2 设计思路:
struct node{int T,P //到达时间,事务处理时间 }输入n,k //顾客总数,窗口数定义结构体队列q(前面定义结构体包含到达和处理事务时间)遍历第一个到第n个顾客建立节点t输入T,P //到达时间,事务处理时间 if(t.P>60) t.P=60将节点t入队endwhile !q.empty()==1flag=1 //是否要等待标志int mintime=9999,mint_=0 //最短等待时间,最短等待时间下标遍历每个窗口if 到达时间>该窗口最快完成时间窗口完成时间=到达和处理时间之和winnum[i]++ //窗口服务人数flag=0 //标记不用等待出队并退出循环if 最快完成时间>该窗口完成时间最快完成时间更新为该窗口完成时间mint_=i //存该窗口下表endif flag==1 //要等待 waittime=最快完成时间-到达时间alltime+=waittime //等待总时间winnum[mint_]++ //该窗口服务人数该窗口最快完成时间=最快完成时间+事务处理时间记录最长等待时间end遍历k个窗口如果该窗口完成时间>最后完成时间 更新最后完成时间直到找到最后完成时间分别输出平均等待时间、最长等待时间、最后完成时间遍历k个窗口输出每个窗口服务人数
2.3 代码截图:
2.4 PTA提交列表说明
部分正确:输出一直错最后一个数据,后来发现求最后完成时间的时候求错了,不该是等待时间加处理时间,而是最快窗口完成时间加处理时间,否则和就变小了,值不对
3.截图本周题目集的PTA最后排名
3.1 栈PTA排名
3.2 队列PTA排名
4. 阅读代码
#include <iostream>
#include <algorithm>
#include <cstring>
#include <stack>
#include <cmath>using namespace std;char s[1000];
int i; double Translation(int & i)
{double integer = 0.0; double remainder = 0.0; while (s[i] >= '0' && s[i] <= '9'){integer *= 10;integer += (s[i] - '0');i++;}if (s[i] == '.'){i++;int c = 1;while (s[i] >= '0' && s[i] <= '9'){double t = s[i] - '0';t *= pow(0.1, c);c++;remainder += t;i++;}}return integer + remainder;
}int GetLevel(char ch)
{switch (ch){case '+':case '-':return 1;case '*':case '/':return 2;case '(':return 0;case '#':return -1;};
}double Operate(double a1, char op, double a2)
{switch (op){case '+':return a1 + a2;case '-':return a1 - a2;case '*':return a1 * a2;case '/':return a1 / a2;};
}double Compute()
{stack<char> optr; stack<double> opnd; optr.push('#');int len = strlen(s);bool is_minus = true; for (i = 0; i < len;){if (s[i] == '-' && is_minus) {opnd.push(0);optr.push('-');i++;}else if (s[i] == ')'){is_minus = false;i++;while (optr.top() != '('){double a2 = opnd.top();opnd.pop();double a1 = opnd.top();opnd.pop();char op = optr.top();optr.pop();double result = Operate(a1, op, a2);opnd.push(result);}optr.pop(); }else if (s[i] >= '0' && s[i] <= '9'){is_minus = false;opnd.push(Translation(i));}else if (s[i] == '('){is_minus = true;optr.push(s[i]);i++;}else{while (GetLevel(s[i]) <= GetLevel(optr.top())){double a2 = opnd.top();opnd.pop();double a1 = opnd.top();opnd.pop();char op = optr.top();optr.pop();double result = Operate(a1, op, a2);opnd.push(result);}optr.push(s[i]);i++;}}while (optr.top() != '#'){double a2 = opnd.top();opnd.pop();double a1 = opnd.top();opnd.pop();char op = optr.top();optr.pop();double result = Operate(a1, op, a2);opnd.push(result);}return opnd.top();
}int main()
{while (cin >> s)cout << "结果为:" << Compute()<< endl << endl;
}
这段代码的功能是进行四则运算,优点:将部分运算符优先级用数字表示,便于比较字符优先级。
地址:https://gitee.com/adressad/codes/9ystlgoh6b413n5vfupa839
. 代码Git提交记录截图
转载于:https://www.cnblogs.com/linyiwei/p/8836324.html
博客作业03--栈和队列相关推荐
- C语言程序设计博客作业03
C语言程序设计博客作业03 这个作业要求在哪里 C语言程序设计作业03:第十周作业 我在这个课程的目标是 掌握二维数组和字符串的使用方法 这个作业在那个具体方面帮助我实现目标 PTA作业和日常练习 参 ...
- c语言|||博客作业03
这个作业属于哪个课程 https://bbs.csdn.net/forums/csuft_swxy_C?typeId=17328 这个作业要求在哪里 https://bbs.csdn.net/topi ...
- DS博客作业03--栈和队列
DS博客作业03--栈和队列 1.本周学习总结(0--1分) 谈谈你对栈和队列结构的认识及学习体会. 这章有认真预习,但做题还要依靠书,记不住,可能还需要多加练习,在PTA上的题只做了栈的,队列的做得 ...
- 【面向对象设计与构造】第一次博客作业
[面向对象设计与构造]第一次博客作业 一.程序结构分析 1. 第一次作业 类图 由于第一次作业难度较低,实现起来也不需要很复杂的算法,因此在编写程序的时候只建立了两个类,Main类主要负责多项式的读入 ...
- 2022北航敏捷软件工程 第二次博客作业
2022北航敏捷软件工程 第二次博客作业 项目 内容 这个作业属于哪个课程 2022年北航敏捷软件工程 这个作业的要求在哪里 个人作业-软件案例分析 我在这个课程的目标是 了解软件工程的方法论.在实践 ...
- 2022北航敏捷软件工程 第一次博客作业
2022北航敏捷软件工程 第一次博客作业 项目 内容 这个作业属于哪个课程 2022年北航敏捷软件工程 这个作业的要求在哪里 个人阅读作业-阅读和调研 我在这个课程的目标是 了解软件工程的方法论.在实 ...
- 初窥构建之法——记2020BUAA软工个人博客作业
项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任建) 这个作业的要求在哪里 个人博客作业 我在这个课程的目标是 完成一次完整的软件开发经历 并以博客的方式记录开发过程的心得 ...
- c int 转 char_C博客作业01--分支、顺序结构 - min小王
这个作业属于哪个班级 C语言网络2011,2012 这个作业的地址 C博客作业01--分支.顺序结构 这个作业的目标 初步认识C语法,掌握数据表达.printf.scanf语法及分支结构内容 0.展示 ...
- 2022软工K班第一次博客作业
2022软工K班第一次博客作业 一.自我介绍 二.思考 三.未来的期望 一.自我介绍 1.1 自我介绍 项目 内容 姓名 林毅 性别 男 昵称 云淡风轻/平安是福/上善若水 学号 012004114 ...
- C语言第二次博客作业---分支结构
C语言第二次博客作业---分支结构 一,PTA实验作业 题目1.计算分段函数 本题目要求计算下列分段函数f(x)的值 1.代码 double x, result;scanf("%lf&quo ...
最新文章
- 低代码技术与市场(Mendix与 OutSystems)
- mysql中有哪些数值型函数_mysql数值型函数汇总
- 网站推广方法众多,对此你了解多少?
- erlang的lists笔记
- python跨目录调用_python 跨目录访问文件
- range函数python2和3区别_【后端开发】range函数python2和3区别
- mysqlclient==1.3.7对应mysql版本_「MySQL」CentOs 7 下安装MySQL
- 有问有答 | Storm技术内幕与实践精华问答
- mysql备库命令_mysql数据库备份命令
- 最大规模线上新基建项目拉开大幕!第127届广交会今天正式开展
- jqueryAjax的使用
- [POI2010]Divine Divisor
- busybox的使用
- 2022年PMP培训机构如何挑选?哪家好?
- 【Linux基础】Linux简史
- 【数据治理】数字治理的效度、温度、 尺度
- 自监督学习(四)Joint Unsupervised Learning of Deep Representations and Image Clusters
- vagrant学习笔记 - provision
- xp系统显示错误1053服务器,使用故障恢复控制台解决XP系统无法启动的常见故障...
- git bash安装SDKman遇到需要安装zip的问题