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

实验3—栈与队列

集美大学课程实验报告-实验3—栈与队列

项目名称 内容
课程名称 数据结构
班级 网安2512
姓名 cxy
实验项目名称 实验3—栈与队列
上机实践日期 2026.4.2
上机实践时间 2学时

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

  • 掌握STL中string的使用

  • 熟练掌握STL中栈(stack)和队列(queue)的基本使用

  • 掌握栈和队列的一些典型应用

二、实验内容与设计思想

题目1:栈的应用("数制转换")。

设计思路:

  • 采用除基取余法,将十进制数反复除以目标进制,得到的余数需逆序输出才是结果。(核心原理)
  • 使用顺序栈存储余数,利用栈后进先出的特性,实现余数的自动逆序输出。(数据结构选择)
  • 定义顺序栈结构,实现栈初始化、判空、入栈、出栈四个基础操作。
  • ① 若待转换数为 0,直接输出 0;
    ② 循环计算余数并入栈,直到商为 0;
    ③ 依次出栈所有余数并输出,得到目标进制数。

Common.h代码截图
image

题目2:使用stack将以下递归程序转化为非递归程序

void test(int &sum)
{
int x;
cin>>x;
if (x==0) sum = 0;
else {
test(sum);
sum+=x;
}
cout<<sum;
}

设计思路:

  • 设计目的:采用非递归方式,利用栈模拟递归调用,实现读取以0为结束符的整数,先输出0,再倒序累加并逐次输出和。
  • 核心原理:借助栈后进先出的特性,存储输入的非 0 数字,模拟递归的回溯过程。
  • 执行流程:读取非 0 数字压入栈中,遇到0时初始化累加和并输出0;依次弹栈数字进行累加,每累加一次输出当前结果。
  • 算法复杂度:时间复杂度 O(n),空间复杂度 O(n)。

Common.h代码截图
image

题目3:队列的应用("舞伴问题")

设计思路:

  • 数据结构:使用两个循环队列,分别存放男士、女士舞者,利用队列先进先出的特性保证排队顺序。
  • 核心流程
    遍历所有舞者,男士入男队,女士入女队;
    当两队都不为空时,依次从两队队头各出一人配对;
    任意一队为空,配对结束。
  • 功能实现:完成队列的入队、出队、判空、求长度基础操作,最后输出剩余人员。

Common.h代码截图
image
image
image
image


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

以下请根据实际情况编写

  • 操作系统:Windows 11专业版
  • 编程语言:C++
  • 开发工具:Visual Studio 2026

四、实验步骤和调试过程

题目1

image
image
题目2

image

题目3

image
image


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

遇到的问题及解决方法:

题目1

  1. 问题:输入负数时,N>0循环不执行,无输出
    • 解决方法:先取绝对值转换,输出前添加负号
  2. 问题:N=0仅输出 0 无换行,与其他结果格式不一致。
    • 解决方法:输出 0 后添加换行符

题目2

  1. 问题:使用else if,仅能输出一种性别的剩余人员,逻辑错误。
    • 解决方法:改为两个独立if判断,分别输出男、女剩余人数。
  2. 问题:仅识别大写M/F,小写 / 其他字符直接丢弃,无异常提示。
    • 解决方法:增加大小写兼容判断,非法性别给出输入错误提示。

题目3

  1. 问题:sum 未初始化为 0
    • 解决方法:遇 0 时将 sum 置 0,保证计算正确
  2. 问题:未逐次输出累加和
    • 解决方法:每弹栈累加一次,立即输出当前 sum

实验体会和收获:

  • 理解了栈后进先出、队列先进先出的本质,明确了两种结构的适用场景
  • 合理选择数据结构能高效解决实际问题,体会到算法与数据结构对程序优化的重要性。

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

以下请根据实际情况编写

  1. 实验3-栈与队列
http://www.jsqmd.com/news/609042/

相关文章:

  • 如何快速安装Nordic主题:5分钟搞定GTK桌面美化
  • douyin-downloader:破解短视频无水印下载难题的全场景解决方案
  • 拆穿名词诈骗!用大白话理解晦涩难懂的AI概念诺
  • Spring Boot项目打包与部署指南
  • Simulink三相桥式有源逆变电路仿真:从参数配置到波形分析
  • 洛谷 P8749:[蓝桥杯 2021 省 B] 杨辉三角形 ← 组合数 + 二分
  • Python MCP服务器模板还在用Flask硬编码?立即升级——这张含自动证书续签、动态路由注册、灰度发布通道的架构设计图即将下线
  • ESL-CN支持向量机实战:SVM算法原理与代码实现
  • 【DOTS性能跃迁实战手册】:20年Unity架构师亲授C# Job System与Burst编译器协同优化的7个致命误区
  • 五大主流(Coding Agents Compared) AI 编程代理‌ 比较
  • RMBG-1.4模型微调教程:针对特定场景的优化方法
  • 为什么 延迟渲染前向渲染
  • Cuvil编译器不是另一个TVM!它用LLVM+MLIR定制Python-first IR,让ResNet50推理延迟压进8.4ms(附源码级性能剖析)
  • LangChain4j核心接口使用(四)Tool和MCP(3)MCP Client
  • 20252818 2025-2026-2 《网络攻防实践》第三周作业
  • 利率曲线构建终极指南:掌握 tf-quant-finance 中的 Hagan-West 算法和单调凸插值
  • 动态数据源与ZooKeeper集成:构建企业级配置中心的终极指南
  • 10个知名网站HTML压缩实战:html-minifier性能优化终极指南
  • 智选未来空间:2025年河北数字展厅展示设计公司企业择优选择
  • DotNetPy:现代.NET 与 Python 互操作 实战指南捉
  • KIHU快狐|49寸户外触摸查询机3000亮度银行用
  • 【PyO3 × GraalVM × CPython 3.14原生AOT三重验证】:2026唯一通过PEP 718认证的配置流程
  • Lobe Theme 国际化支持:如何为你的语言贡献翻译
  • AI + Cybersecurity
  • 虚拟线程调度失灵、协程泄漏、监控断连——Java 25高并发架构崩塌前的5个预警信号,速查!
  • 别再死记硬背公式了!用MATLAB Simulink从零搭建一阶倒立摆模型(附完整.m文件)
  • 新手避坑指南:用Seurat分析单细胞数据时,这5个参数设置错误最要命
  • 三步掌握FullCalendar Vue3组件:从入门到场景化落地
  • 如何让求职效率提升300%?NewJob智能插件帮你避开90%的无效岗位
  • ESP32-CAMERA官方例程在S3开发板上不工作?手把手教你排查引脚与PSRAM配置