数据结构|用栈实现十进制转换成二进制(实验3.5)
来源:互联网 发布:怎么自己注册域名 编辑:程序博客网 时间:2024/05/21 19:24
一、实验目的
1、熟练掌栈的结构特点,掌握栈的顺序存储结构和实现。
2、学会使用栈解决实际问题。
二、实验内容
1、自己确定结点的具体数据类型和问题规模,建立一个顺序栈,实现栈的压栈和出栈操作。
三、实验步骤
1、依据实验内容分别说明实验程序中用到的数据类型的定义;
class SeqStack { private: int data[Size]; //数据存储数组 int top; public: SeqStack (){top=-1;} ~SeqStack (){} void Push(int x); //入栈操作 void Pop(); //出栈操作};
2、相关操作的算法表达;
2.1、构造函数,初始化一个空栈
2.2、入栈操作函数:①.判断是否栈满,若是则抛出上溢错误,否则
②.进行十进制向二进制的转换
2.3、出栈操作函数:①判断是否栈空,若是则抛出下溢错误,否则
②先返回栈顶指针 top 指向的位置的值,再把栈顶指针 top 往下移一位,输出数值
3、完整程序;
由于结点元素类型不确定,因此采用C++模板机制。
源代码如下:
#include<iostream> using namespace std; const int Size = 50; class SeqStack { private: int data[Size]; //数据存储数组 int top; public: SeqStack (){top=-1;} ~SeqStack (){} void Push(int x); //入栈操作 void Pop(); //出栈操作};void SeqStack ::Push(int x) { top=-1; int y; int m=2; if(top==Size-1) throw "上溢"; while(x!=0) { y=x%m; data[++top]=y; x=x/m; }; }void SeqStack ::Pop() { if (top == -1) throw "下溢"; while(top!=-1) { int x=data[top--]; cout<<x; } }void main() { int i=1; int number; SeqStack a; do{ cout<<"请输入一个十进制整数!"<<endl; cin>>number; a.Push(number); a.Pop(); cout<<endl; cout<<"若需要继续转换,请输入1;否则请输入0!"<<endl; cin>>i; }while(i==1); }
4、总结、运行结果和分析。
①总结
在程序内输入对象,将对象入栈。
通过调用函数,实现入栈、出栈、进制转换等基本功能。
②运行结果如下:5、总体收获和不足,疑问等。
本次试验较为简单,因为实验内容较少,且对书本知识掌握得有点熟悉。但本次试验还是发现了自己的不足之处。经过改进、询问同学,成功完成了实验。收获颇丰。总的来说,我对理论知识有了更充分的理解,也能较大程度明白运行原理。
阅读全文
0 0
- 数据结构|用栈实现十进制转换成二进制(实验3.5)
- 实验三:十进制转换成二进制数(顺序栈)
- 数据结构5:利用栈实现二进制到十进制的转换
- 用栈实现十进制转换为二进制
- 用顺序栈实现十进制数转换成二进制数
- 二进制数转换成十进制数(栈来实现)
- 【栈】十进制转换成二进制的过程及算法实现
- 用递归法实现一个十进制数据转换成二进制
- 用栈实现十进制到二进制的转换
- 十进制转换到二进制(用自定义的栈实现
- 十进制转换为二进制 八进制 ——用栈实现
- 位运算实现 十进制(正负)转换成二进制
- 【JavaScript实现十进制转换成二进制】
- 顺序栈实现十进制转换二进制
- 利用栈实现二进制转换为十进制
- 用堆栈实现十进制转换为二进制
- 十进制转换成二进制
- 十进制转换成二进制
- 项目中遇到的问题(新)
- MIT算法导论公开课第八讲全域哈希和完全哈希
- Intellij IDEA 设置自动生成 serialVersionUID
- 3的幂的和-----51Nod//快速幂
- Component.GetComponentsInChildren
- 数据结构|用栈实现十进制转换成二进制(实验3.5)
- python 爬取360看看的电影
- Android Studio不能走到断点的原因?
- Java 多线程同步的五种方法
- Java常用集合类及其区别
- Java发展史
- iOS11&iPhoneX适配&Xcode9打包注意事项
- linux ab命令实践
- 网络拦截器