当前位置: 首页 > news >正文

实验报告-栈和队列

集美大学课程实验报告-实验3:栈、队列

项目名称 内容
课程名称 数据结构
班级 网安 2511
学号 202521336002
实验项目名称 栈和队列
上机实践日期 2026.04.02
上机实践时间 2学时

一、目的(本次实验所涉及并要求掌握的知识点)

  • 掌握STL中string的使用
  • 熟练掌握STL中栈(stack)和队列(queue)的基本使用
  • 掌握栈和队列的一些典型应用

二、实验内容与设计思想

题目1:栈的应用(符号配对)

函数相关伪代码

getline整行输入string类型的s
定义栈node
循环:
{char c=s[i]if (c找到'(','[','{'){node.push()}else if(c找到')',']','}'){判断:if(node.empty){栈内没有匹配的符号,输出no并跳出循环}取栈顶元素top,为找到配对,cout<<top并cout<<no若匹配,弹出栈顶元素node.pop()}
}
if(node.empty){全部匹配成功并弹出,cout<<yes;}else//失败{cout<<top<<endl;cout<<no;}

函数代码

#include<iostream>
#include<stack>
#include<string>
using namespace std;
int main()
{string s;getline(cin,s);//整行输入stack<char> node;for(int i=0;i<s.size();i++){char c=s[i];if(c=='('||c=='['||c=='{'){node.push(c);//符合要求就入栈}else if(c==')'||c==']'||c=='}'){if(node.empty())//先判断没有配对的情况{cout<<"no";return 0;}char top=node.top();int y=0;if(top=='('&&c==')') y=1;if(top=='['&&c==']') y=1;if(top=='{'&&c=='}') y=1;if(!y){cout<<top<<endl;cout<<"no";return 0;}else{node.pop();}}}if(node.empty()){cout<<"yes";}else{cout<<node.top()<<endl;cout<<"no";}return 0;
}

题目2:队列的应用(银行业务队列)

函数相关伪代码

定义两个队列qa、qb
输入数据数量n
循环(i<n)
{输入处理数据numif(num%2!=0){进入qa队列}else{进入qb队列}
}
循环(qa或qb不是空队列时)
{循环(i<2&&!qa.empty){格式化输出不超过两个qa里的元素}格式化输出qb里的元素
}

函数代码

#include<iostream>
#include<queue>using namespace std;
int main()
{queue<int>qa;queue<int>qb;int n;cin>>n;for(int i=0;i<n;i++){int num;cin>>num;if(num%2!=0){qa.push(num);}else{qb.push(num);}}int first=1;while(!qa.empty()||!qb.empty()){for(int i=0;i<2&&!qa.empty();++i){if(!first){cout<<" ";}cout<<qa.front();qa.pop();first=0;}if(!qb.empty()){if(!first){cout<<" ";}cout<<qb.front();qb.pop();first=0;}}cout<<endl;return 0;
}

三、实验使用环境(本次实验所使用的平台和相关软件)

  • 操作系统:Windows 10 专业版
  • 编程语言:C++
  • 开发工具:Visual Studio 2022
  • 编译器:vs2022默认编译器

四、实验步骤和调试过程(实验步骤、测试数据设计、测试结果分析)

题目1:符号配对

本机运行截图

本机stack

PTA提交截图
栈1

题目2:银行业务队列

本机运行截图
本机queue

PTA提交截图
队列1


五、实验小结(实验中遇到的问题及解决过程、实验体会和收获)

遇到的问题及解决方法:

  1. 问题:编译报错
  • 解决方法:.pop/.front后面要加上括号。
    2. 问题:符号配对判断条件错误
  • 解决方法:top是取在栈里准备匹配的第一个元素,c的查找情况与top配对即可

实验体会和收获:

  • 掌握了string的使用
  • 熟练掌握stack和queue的基本使用
  • 掌握栈和队列的一些典型应用案例

六、附件(参考文献和相关资料)

  1. C++ Primer
  2. 实验3-栈与队列
http://www.jsqmd.com/news/592383/

相关文章:

  • 解锁游戏自由:Sunshine开源解决方案打造跨设备串流体验
  • 2026年中国热门厨房湿巾机品牌排名,适合不同香味湿巾的品牌推荐 - 工业品牌热点
  • 2026年太原靠谱的花梨木木材回收公司,木材回收公司怎么收费 - myqiye
  • 开源硬件管理能力提升实战指南:3步释放你的设备全部潜能
  • 3大维度升级中文媒体中心:告别痛点的本地化方案
  • 突破访问限制:AO3镜像站5大核心问题解决方案
  • 反射概述
  • 2026年北京好用的厨房湿巾机品牌,适合不同质量控制水平企业 - 工业推荐榜
  • 新手福音:借助快马AI生成你的第一个软件介绍与下载网页
  • 5分钟掌握AI药物分子设计:REINVENT 4如何重塑药物研发流程
  • 面向金融 Agent 的 Harness 实时风控规则引擎
  • 梳理山西靠谱古建设计公司排名,我想设计新建古建项目哪家性价比高? - 工业品牌热点
  • 如何3分钟搞定全网音乐歌词:163MusicLyrics完整指南
  • 基于stm32的个人健康助手设计[单片机]-计算机毕业设计源码+LW文档
  • UndertaleModTool高效全流程指南:从游戏解包到个性化修改
  • 探讨德州贴隐形车衣费用,KDX康得新德州创途旗舰店多少钱 - 工业设备
  • 新手福音:快马平台AI引导零代码制作ventoy多系统启动U盘
  • BetterJoy 完整指南:让Switch手柄成为你的PC游戏利器
  • 2026泰安商标注册好用品牌有哪些,如何选择商标注册类别和注意事项 - 工业推荐榜
  • ai辅助排障:让快马智能分析并修复windows安装openclaw时的各种报错
  • 用快马AI快速搭建论文数据可视化原型,十分钟验证研究思路
  • 构建高可用多平台音乐资源聚合系统:music-api统一接口解决方案
  • 分析德州能贴正品隐形车衣的店,哪家口碑好、价格合理? - 工业品网
  • 基于stm32的车速检测系统[单片机]-计算机毕业设计源码+LW文档
  • Campus-Imaotai:基于Java的茅台自动预约系统深度解析与实战指南
  • 快速验证c语言算法:使用快马ai一键生成排序算法性能对比原型
  • 碧蓝航线自动化工具零基础高效配置全攻略
  • 马尔科夫决策WebApp实验室:从状态转移到智能决策的探索
  • OneNote到Markdown迁移终极指南:免费快速转换你的笔记宝库
  • 塑料瓶分类数据集数据集拥有6个类别、总计7033张图片已划分为训练集和验证集可直接支持分类模型进行训练验证目前resnet50的Top1准确率是90.09%Top5准确率是99.91%