集美大学课程实验报告-实验3:栈、队列与递归
项目名称 | 内容 |
---|---|
课程名称 | 数据结构 |
班级 | 网安2413 |
指导教师 | 郑如滨 |
学生姓名 | 林沁茹 |
学号 | 202421336067 |
实验项目名称 | 实验3:栈、队列与递归 |
上机实践日期 | |
上机实践时间 | 2学时 |
一、目的(本次实验所涉及并要求掌握的知识点)
以下内容请根据实际情况编写
- 掌握STL中栈和队列的基本存储结构
- 掌握STL中string的使用
- 熟练掌握栈(stack)和队列(queue)的基本使用
- 掌握栈和队列的一些典型应用
二、实验内容与设计思想
题目1:栈的应用
函数相关伪代码
数制转换
cin>>x
if(x==0)
|cout<<"0"
|return
else if(x<0)
|x=-x
|cout<<"-"
whilie(x!=0)
|t=x%8
|s1.pushu(t)
|x=x/8
end
while(!s1.empty())
|e=s1.top()
|s1.pop()
|cout>>e
end
函数代码
#include <iostream>
#include <stack>
using namespace std;
int main()
{stack<int> s1;int n;cin >> n;if (n == 0) {cout << 0;return 0;}else if (n < 0) {cout << "-";n = -n;}while (n!=0){s1.push(n % 8);n /= 8;}while (!s1.empty()){cout << s1.top();s1.pop();}return 0;
}时间复杂度O(n),空间复杂度O(n)
题目2:递归程序编写
函数相关伪代码
while(x!=0)
|cin<<x
|s1.push(x)
end
while(!s1.empty())
|sum+=s1.top
|s1.pop()
end
函数代码
#include <iostream>
#include <stack>
using namespace std;
int main()
{int sum=0,x;stack < int > s1;cin >> x;s1.push(x);while(x!=0){cin >> x;s1.push(x);}while (!s1.empty()){sum += s1.top();s1.pop();}cout << sum << endl;return 0;
}时间复杂度O(n),空间复杂度O(n)
题目3:队列的应用
函数相关伪代码
queue<int>q1,q2
int n,i,k
cin>>n
for(i=0;i<n;i++)
|cin>>k
|if(k%2)
||q1.push(k)
|else
||q2.push(k)
while(!q1.empty()&&!q2.empty())
|cout<<q1.front()
|q1.pop()
|if(!q1.empty())
||cout<<q1.front()
||q1.pop()
|cout<<q2.front()
|q2.pop()
end
while(!q1.empty())
|cout<<q1.front()
|q1.pop()
end
while(!q2.empty())
|cout<<q2.front()
|q2.pop()
end
函数代码
#include <iostream>
#include<queue>
#include<stack>
using namespace std;int main()
{queue<int>q1, q2;int n,i,k;cin >> n;for (i = 0; i < n; i++) {cin >> k;if (k % 2) {q1.push(k);}else {q2.push(k);}}while (!q1.empty()&& !q2.empty()) {cout << q1.front()<<" ";q1.pop();if(!q1.empty()){cout << q1.front()<<" ";q1.pop();}cout << q2.front()<<" ";q2.pop();}while (!q2.empty()) {cout << q2.front();q2.pop();if(!q2.empty()){cout << " ";
}}while (!q1.empty()) {cout << q1.front();q1.pop();if(!q1.empty()){cout << " ";
}}return 0;
} 时间复杂度O(n),空间复杂度O(n)
三、实验使用环境(本次实验所使用的平台和相关软件)
以下请根据实际情况编写
- 操作系统:Windows 11专业版
- 编程语言:C++
- 开发工具:[Visual Studio 2022(https://code.visualstudio.com/)
四、实验步骤和调试过程(实验步骤、测试数据设计、测试结果分析)
以下请根据实际情况编写
题目1:数制转换
本机运行截图
![本机截图]
PTA提交截图
![PTA提交截图]无
题目2:递归程序转化为非递归程序
本机运行截图
![本机截图]
PTA提交截图
![PTA提交截图]无
题目3:队列的应用
本机运行截图
![本机截图]
PTA提交截图
![PTA提交截图]
五、实验小结(实验中遇到的问题及解决过程、实验体会和收获)
以下请根据实际情况编写
遇到的问题及解决方法:
- 问题:程序崩溃找不到原因,终端崩溃
- 解决方法:使用打断点进行调试的方法。
- 问题:代码缩进不规范。
- 解决方法:使用visual studio修复代码。
实验体会和收获:
- 学会了如何搭建C++开发环境。
- 掌握了基本的代码调试方法。
- 掌握了Visual Studio调试功能的基本使用