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

一、实验目的
熟练掌栈的结构特点,学会使用栈解决实际问题。实现十进制转二进制的功能。
二、实验内容
十进制转二进制的一个算法是不断的去余,再逆序拼接在一起。注意,是逆序,就是先算出来的后拼接。这个特性正和栈的先进后出相匹配,只要把取余的出来的数压栈,计算完之后,再逐个弹栈出来,拼接在一起,就可以完成这一功能。之前写过一个顺序栈的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++模板的便利,栈的用途。

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

新世界的大门 (๑•̀ㅂ•́)و✧

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值