尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

C++队列(练习题)

C++队列(练习题)
📅 发布时间:2026/6/25 22:12:14

生日密码

【描述】密码由生日作为基数(8位数字),生成密码的规则如下:
将第1个数字删除,第2个数字放到数字序列末端,再将第3个数字放到数字序列末端。
重复执行第一步,直到所有数字删除完毕。删除的数字将会组成一串新的数字,这就是密码。
【输入格式】一行,一组八位数字。
【输出格式】一行,八位数字生成的密码。
【输入样例】18781205
【输出样例】18075281

#include<iostream>usingnamespacestd;#defineMAXN9intq[MAXN]={0};//循环队列,最多能存储(MAXN-1)个元素inthead=0;// 指向队头inttail=0;// 指向队尾下一个boolempty(){returnhead==tail?true:false;}voidpush(intx){if((tail+1)%MAXN!=head){// 队列不满q[tail]=x;tail=(tail+1)%MAXN;}}voidpop(){if(!empty()){// 队列不空head=(head+1)%MAXN;}}intfront(){if(!empty())returnq[head];cout<<"Queue is empty";return-1;}intmain(){charch[9];cin>>ch;for(inti=0;i<=7;i++){//8个数字依次入队push(ch[i]-'0');}// 开始报数1~3,直到队列为空intcnt=1;// 报的数while(!empty()){if(cnt==1){// 将第1个数字删除cout<<front();pop();}else{// 第2、3个数字放到数字序列末端intx=front();// 队首pop();push(x);}cnt++;// 1~3循环报数if(cnt==4)cnt=1;}return0;}/* 【输入用例2】 12345678 【输出用例2】 14738625 【输入用例3】 00000000 【输出用例3】 00000000 【输入用例4】 87654321 【输出用例4】 85261374 【输入用例5】 99999999 【输出用例5】 99999999 【输入用例6】 13572468 【输出用例6】 17658432 */

括号匹配验证

【描述】验证括号序列合法性,合法性是指左括号必须要有相对应的右括号,括号类型分为[]与()两种。
【输入描述】
输入一串由[、]、(、)、符号组成的字符串
【输出描述】
输出该字符串是否合法
【样例输入1】
[]
【样例输出1】
合法
【样例输入2】
[))]
【样例输出2】
非法

#include<iostream>usingnamespacestd;// 判断括号字符串是否合法的函数(仅支持小括号和中括号)// 参数:char* s - 待检查的括号字符串// 返回值:bool - 合法返回true,非法返回falseboolisValid(char*s){intstack[1005],top=-1;// 定义栈数组和栈顶指针for(inti=0;s[i];i++)// 遍历字符串的每个字符{if(s[i]=='('||s[i]=='[')// 如果是左括号stack[++top]=s[i];// 栈顶指针先+1,再将左括号压入栈else// 如果是右括号{if(top==-1)returnfalse;// 栈为空(无左括号匹配),直接返回非法charc=stack[top--];// 取出栈顶左括号(栈顶指针-1)// 检查括号是否匹配:右小括号必须匹配左小括号,右中括号必须匹配左中括号if((s[i]==')'&&c!='(')||(s[i]==']'&&c!='['))returnfalse;// 不匹配则返回非法}}returntop==-1;// 遍历结束后,栈必须为空(所有左括号都被匹配)才算合法}intmain(){constintMAX_LEN=20;// 定义输入字符串的最大长度(防止溢出)charstr[MAX_LEN];// 存储输入的括号字符串cin.getline(str,MAX_LEN);// 读取输入(支持包含空格的字符串,最多读取19个字符+结尾'\0')// 调用isValid函数判断合法性,输出"合法"或"非法"cout<<(isValid(str)?"合法":"非法")<<endl;return0;}/* 【输入用例2】 ()[] 【输出用例2】 合法 【输入用例3】 ([]) 【输出用例3】 合法 【输入用例4】 ([)] 【输出用例4】 非法 【输入用例5】 )( 【输出用例5】 非法 【输入用例6】 【输出用例6】 合法 */

杨辉三角生成

【描述】用队列相关知识生成杨辉三角
【输入描述】输入一个大于0的正整数n,n表述杨辉三角的行数
【输出描述】输出对应的n行杨辉三角
【样例输入】5
【样例输出】
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1

#include<iostream>#include<queue>#include<vector>usingnamespacestd;intmain(){intn;cin>>n;//输入要生成的杨辉三角行数queue<int>q;q.push(1);// 初始化第一行for(inti=1;i<=n;++i){// 输出前导空格(使每行居中)for(intspace=0;space<n-i;++space){cout<<" ";}// 保存当前行的元素,并输出vector<int>current_row;boolfirst_element=true;// 标记是否为当前行第一个元素(避免前导空格)while(!q.empty()){intnum=q.front();q.pop();if(first_element){cout<<num;first_element=false;}else{cout<<" "<<num;}current_row.push_back(num);}cout<<endl;// 生成下一行的元素并入队queue<int>next_q;next_q.push(1);// 下一行首元素为1// 计算中间元素(当前行相邻元素之和)for(intj=0;j<current_row.size()-1;++j){next_q.push(current_row[j]+current_row[j+1]);}if(!current_row.empty()){// 下一行尾元素为1(当前行非空时)next_q.push(1);}q=next_q;// 更新队列为下一行}return0;}/* 【输入用例2】 1 【输出用例2】 1 【输入用例3】 3 【输出用例3】 1 1 1 1 2 1 【输入用例4】 9 【输出用例4】 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21 35 35 21 7 1 1 8 28 56 70 56 28 8 1 【输入用例5】 15 【输出用例5】 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21 35 35 21 7 1 1 8 28 56 70 56 28 8 1 1 9 36 84 126 126 84 36 9 1 1 10 45 120 210 252 210 120 45 10 1 1 11 55 165 330 462 462 330 165 55 11 1 1 12 66 220 495 792 924 792 495 220 66 12 1 1 13 78 286 715 1287 1716 1716 1287 715 286 78 13 1 1 14 91 364 1001 2002 3003 3432 3003 2002 1001 364 91 14 1 【输入用例6】 20 【输出用例6】 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21 35 35 21 7 1 1 8 28 56 70 56 28 8 1 1 9 36 84 126 126 84 36 9 1 1 10 45 120 210 252 210 120 45 10 1 1 11 55 165 330 462 462 330 165 55 11 1 1 12 66 220 495 792 924 792 495 220 66 12 1 1 13 78 286 715 1287 1716 1716 1287 715 286 78 13 1 1 14 91 364 1001 2002 3003 3432 3003 2002 1001 364 91 14 1 1 15 105 455 1365 3003 5005 6435 6435 5005 3003 1365 455 105 15 1 1 16 120 560 1820 4368 8008 11440 12870 11440 8008 4368 1820 560 120 16 1 1 17 136 680 2380 6188 12376 19448 24310 24310 19448 12376 6188 2380 680 136 17 1 1 18 153 816 3060 8568 18564 31824 43758 48620 43758 31824 18564 8568 3060 816 153 18 1 1 19 171 969 3876 11628 27132 50388 75582 92378 92378 75582 50388 27132 11628 3876 969 171 19 1 */

反转队列元素

【描述】自定义输入一串队元素,然后反转队列中的元素顺序接着输出这些元素。
【输入描述】输入为两行,第一行数字n,表示元素的个数(不超过100个);第二行输入n个元素
【输出描述】输出反转前与反转后的对列元素顺序
【样例输入】
5
2 4 6 8 10 12
【样例输出】
反转前:2 4 6 8 10
反转后:10 8 6 4 2

#include<iostream>#include<queue>#include<stack>usingnamespacestd;// 使用栈辅助反转队列voidreverseQueueWithStack(queue<int>&q){stack<int>temp_stack;// 辅助栈// 步骤1:将队列元素全部出队并压入栈(队列FIFO → 栈LIFO)while(!q.empty()){temp_stack.push(q.front());q.pop();}// 步骤2:将栈中元素弹回队列(栈顶→队尾,实现顺序反转)while(!temp_stack.empty()){q.push(temp_stack.top());temp_stack.pop();}}// 辅助函数:打印队列元素voidprintQueue(constqueue<int>&q){queue<int>temp=q;// 复制队列避免修改原队列while(!temp.empty()){cout<<temp.front()<<" ";temp.pop();}cout<<endl;}intmain(){queue<int>q;intnum[100];//存贮输入队列元素intn;cin>>n;// 初始化队列for(inti=1;i<=n;++i){cin>>num[i];q.push(num[i]);}cout<<"反转前:";printQueue(q);// 输出:1 2 3 4 5reverseQueueWithStack(q);cout<<"反转后:";printQueue(q);// 输出:5 4 3 2 1return0;}/* 【输入用例2】 3 1 1 1 【输出用例2】 反转前:1 1 1 反转后:1 1 1 【输入用例3】 6 1 2 3 4 5 6 【输出用例3】 反转前:1 2 3 4 5 6 反转后:6 5 4 3 2 1 【输入用例4】 1 99 【输出用例4】 反转前:99 反转后:99 【输入用例5】 9 1 25 6 89 101 265 512 1999 2020 【输出用例5】 反转前:1 25 6 89 101 265 512 1999 2020 反转后:2020 1999 512 265 101 89 6 25 1 【输入用例6】 9 -1 -2 -3 -4 0 4 3 2 1 【输出用例6】 反转前:-1 -2 -3 -4 0 4 3 2 1 反转后:1 2 3 4 0 -4 -3 -2 -1 */

相关新闻

  • 链动 2+1 模式合规吗?小程序商城源码如何实现走人留人机制、规避分销风险?
  • 【毕业设计】基于 Django 的医疗数据可视化辅助诊疗系统的设计与实现 基于 Django 的社区智能医疗服务辅助系统(源码+文档+远程调试,全bao定制等)
  • BYOL自监督学习原理与工业落地实战指南

最新新闻

  • Claude Mythos:首个通过32步真实攻防链的通用大模型
  • 为什么“无数据训练的自指AI“是下一个十万亿市场——从符号AI到宇宙演化,那件“礼物“一直在我们手里,只是视而不见
  • 【限时公开】VMware官方未文档化的开发加速技巧:CPU热添加、GPU直通调试、内存压缩调优——仅剩3个内网测试镜像可下载
  • ISO26262 功能安全考试---历年真题(四)
  • 告别网盘限速!免费浏览器插件实现高速下载的完整指南
  • AI编排实战:MuleSoft+LangChain双引擎架构设计

日新闻

  • 利用微PE工具箱进行系统安装教程
  • 渗透测试十大核心工具实战指南:从信息搜集到报告生成全流程解析
  • 暗黑破坏神2存档编辑器:网页版角色修改工具完全指南

周新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号