您的位置:首页 > 其它

十进制转二进制的实现(实验3.3)

2017-10-29 10:02 253 查看
一、实验目的

熟练掌栈的结构特点,学会使用栈解决实际问题。实现十进制转二进制的功能。

二、实验内容

十进制转二进制的一个算法是不断的去余,再逆序拼接在一起。注意,是逆序,就是先算出来的后拼接。这个特性正和栈的先进后出相匹配,只要把取余的出来的数压栈,计算完之后,再逐个弹栈出来,拼接在一起,就可以完成这一功能。之前写过一个顺序栈的C++模板,这里给它增加一个函数方法。下面给给出了上一版本的顺序表模板连接。

顺序栈模板1.0

SeqStack.h 的public中添加:

// 进制转换
void Decimaltor(DataType n,int r);


SeqStack.cpp中添加上面方法的实现:

// 在之前模板基础上增加的功能
template <class DataType>
void SeqStack<DataType>::Decimaltor(DataType n,int r)
{
top = -1;
int k;
while(n != 0) {
k = n % r;
Push(k);
n = n / r;
}
while(top != -1) {
cout << Pop() << '\t';
}
}


main.cpp

#include <iostream>
#include "SeqStack.cpp"
using namespace std;

int main(int argc, const char * argv[]) {
SeqStack<int> stack = SeqStack<int>();
int n, r;
cout << "请输入一个十进制数字 : " << endl;
cin >> n;
cout << "需要转换成的进制 : " << endl;
cin >> r;
stack.Decimaltor(n, r);
cout << endl;
return 0;
}


三、心得和体会

一开始看到十进制转二进制这个题目出现在栈和队列的练习中,一开始我还是有疑惑的,这转换进制和这个数据结构有关系吗?可是仔细一想进制转换的算法,突然发现其中的相似的先进后出的特点。当然,我写的这个模板也可以应用于十进制转任意进制。这里就体现了C++模板的便利,栈的用途。

在空闲的时候更新的地方,大家可以捧一下场,嘿嘿~

新世界的大门 (๑•̀ㅂ•́)و✧
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: