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

news/2025/3/24 21:53:29/文章来源:https://www.cnblogs.com/Lbc880/p/18787707

集美大学课程实验报告-实验2:线性表

项目名称 内容
课程名称 数据结构
班级 网安2411
指导教师 郑如滨
学生姓名 李斌财
学号 202421336021
实验项目名称 站和队列
上机实践日期
上机实践时间 2学时

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

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

二、实验内容与设计思想

题目1:符号配对

函数代码

#include <iostream>
#include <stack>
#include <string>using namespace std;
bool isMatch(char a, char b) {if (a == '(' && b == ')') return true;if (a == '[' && b == ']') return true;if (a == '{' && b == '}') return true;return false;
}
int main() {string expression;getline(cin, expression);stack<char> s;for (char c : expression) {// 如果是左括号,压入栈中if (c == '(' || c == '[' || c == '{') {s.push(c);}// 如果是右括号,检查是否匹配else if (c == ')' || c == ']' || c == '}') {if (s.empty()) {// 栈为空,没有匹配的左括号cout << "no" << endl;return 0;} else {char top = s.top();s.pop();if (!isMatch(top, c)) {cout << top << endl;cout << "no" << endl;return 0;}}}}// 遍历结束if (s.empty()) {cout << "yes" << endl; // 栈为空,说明所有括号都匹配} else {// 栈不为空,输出栈顶元素并换行输出 nocout << s.top() << endl;cout << "no" << endl;}return 0;
}
### 题目2:使用stack将以下递归程序转化为非递归程序(可申请检查加分)
void test(int &sum)
{ int x; cin>>x; if (x==0) sum = 0;  else {test(sum);sum+=x;} cout<<sum; 
}
改写后的代码:
#include <iostream>
#include <stack>
using namespace std;void test(int& sum) {stack<int> s;int x;while (true) {cin >> x;if (x == 0) {break; }s.push(x); }while (!s.empty()) {x = s.top(); s.pop(); sum += x; }cout << sum << endl; 
}
### 题目3:银行业务队列简单模拟
**函数代码**
#include <iostream>
#include <queue>
using namespace std;int main() {int n, k;cin >> n;queue<int> a, b;for (int i = 0; i < n; i++) {cin >> k;if (k % 2 == 0) {b.push(k); // 偶数编号的顾客去B窗口} else {a.push(k); // 奇数编号的顾客去A窗口}}// 处理A窗口和B窗口的顾客while (!a.empty() || !b.empty()) {if (!a.empty()) {cout << a.front();a.pop();if (!a.empty() || !b.empty()) cout << " ";}if (!a.empty()) {cout << a.front();a.pop();if (!a.empty() || !b.empty()) cout << " ";}if (!b.empty()) {cout << b.front();b.pop();if (!a.empty() || !b.empty()) cout << " "; }}return 0;
}

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

  • 操作系统:Windows 11
  • 编程语言:C++
  • 开发工具:PTA,visual studio 2022
  • 编译器:gcc

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





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

遇到的问题及解决方法:

  1. 问题:银行问题中空格处理
    • 解决方法: if (!a.empty() || !b.empty()) cout << " ";
      }虽然很丑陋但还是通过了;

实验体会和收获:

学会了栈(stack)和队列(queue)的基本使用


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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/904164.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

L3 设计,开发,认证

我都想笑了之十万八千个视频需要看。L3 设计,开发,认证 这里我暂时跳过了那些PPT里面要求看的视频,过一会再整理。 利益相关者和需求 ​ 从图中我们可以得到如下信息:航空器的生命周期:设计——生产——认证——运营 原始设备制造商(original equipment manufacturer,OE…

KMP 入门

前传:BF 算法 BF 算法即为暴力解法,一位一位向下匹配。 时间复杂度约为 \(O(n \times m)\)。KMP KMP 算法的主要思想是利用部分匹配信息,避免重复匹配,提高字符串查找效率。 KMP 算法总时间复杂度是 \(O(n + m)\),匹配用时 \(O(n)\)。 \(m\) 为模式串长度,\(n\) 为目标串…

web-CodeInject

<?php#Author: h1xaerror_reporting(0); show_source(__FILE__);eval("var_dump((Object)$_POST[1]);");eval("var_dump((Object)$_POST[1]);");:这行代码使用了eval()函数,这是一个非常危险的函数,因为它会执行传递给它的字符串作为PHP代码。这意味…

kettle插件-dm达梦数人大金仓Vastbase数据库插件

在国家大力倡导原创技术、推动信息技术应用创新(信创)的政策背景下,摆脱对国外技术的依赖、构建自主可控的信息技术体系成为重要发展方向。大数据作为信息技术的重要组成部分,国产大数据技术和产品迎来了前所未有的发展机遇。 信创旨在实现核心技术自主可控,保障国家信息安…

广义优势估计(GAE):端策略优化PPO中偏差与方差平衡的关键技术

广义优势估计(Generalized Advantage Estimation, GAE)由Schulman等人在2016年的论文中提出,是近端策略优化(PPO)算法的重要基础理论,也是促使PPO成为高效强化学习算法的核心因素之一。 GAE的理论基础建立在资格迹(eligibility traces)和时序差分λ(TD-λ)之上,为深入理解GA…

集合体系介绍、collection的使用--java进阶day09

1.集合体系结构 我们要学习的集合大体分为两种,一种是单列集合,一种是双列集合2.单列集合 单列集合又分为两个派系,分别为list接口和set接口,这两个接口皆是collection接口的子接口3.Collection接口既然要使用,那就必然要创建对象,但我们知道Collection是接口,不能实例化…

mybatis组件SqlSource的种类

SqlSource是mybatis重要的组件,是对你写的sql语句的简单封装。public interface SqlSource {BoundSql getBoundSql(Object parameterObject);}这个接口有很多种实现:VelocitySqlSource这个实现类是一个测试。实际上mybatis根本就不会使用这个实现类。 那么在mybatis内部是在哪…

静雅斋目录2

托管于国内企业顶想云的使用目录前情概要 本来已经有一个使用目录了,但是实在是受不了 GitHub 时不时卡壳的表现,就重新启用这个国内的搜索目录,外观要稍微差一点,但使用体验要好得多。 托管地址 托管于 顶想云 平台的目录样式 .编辑地址:顶想云.iframe-container { /* 容…

ARP高级欺骗-配置路由转发

引出问题: 当我们发起一次ARP欺骗之后,目标主机会出现断网情况。这种很容易就会被目标主机A发现。那我们怎么让目标主机发现不了自己被ARP欺骗了呢?问题描述: 1.受害主机A断网: 当目标主机A上网时,会进行TCP的连接,但是因为ARP欺骗之后,主机A的路由转发到的是主机B而不…

使用XIAO ESP32C6, XIAO扩展板和SHT31温湿度传感器构建温湿度计

我很高兴与您分享我的最新项目:我使用XIAO ESP32C6, XIAO扩展板和SHT31温湿度传感器构建的DIY温湿度计。我的目标是创造一种设备,可以帮助我监测家里的湿度水平,特别是因为我住在沿海热带地区,那里的湿度波动很大。这个想法来自于我需要保持一个舒适的室内环境。有时空气会…

可视化图解算法:判断一个链表是否为回文结构(回文链表)

对于链表的相关操作,我们总结了一套【可视化+图解】方法,依据此方法来解决链表相关问题,链表操作变得易于理解,写出来的代码可读性高也不容易出错。1. 题目 描述 给定一个链表,请判断该链表是否为回文结构。 回文是指该字符串正序逆序完全一致。 数据范围: 链表节点数 0≤…