用栈实现进制转换

来源:互联网 发布:mac屏保 windows 编辑:程序博客网 时间:2024/06/17 02:04

【问题】利用栈实现10进制到2~9进制的转换。

【分析】还是使用短除法的思想,只不过把每次除的结果用栈保存。因为最后的结果正好符合栈后进先出的特点,用栈可以很方便。

#include <iostream>using namespace std;class ArrayStack{private:    int maxSize;//栈的最大值    int top;//栈顶位置    int *st;//存放栈元素的数组public:    ArrayStack(int size)    {        maxSize=size;        top=-1;        st=new int[maxSize];    }    //检查栈是否满    bool Push(const int item)    {        if(top==maxSize-1)            return false;        st[++top]=item;        return true;    }    //检查栈是否为空    bool Pop(int &item)    {        if(top==-1)            return false;        item=st[top--];        return true;    }};int main(){    int num=10;    int index=2;//2进制,装换为其他进制只需改这个即可    ArrayStack arrayStack=ArrayStack(10);    do    {        arrayStack.Push(num%index);        num/=index;    }while(num);    int item;    while(arrayStack.Pop(item))        cout<<item<<" ";    return 0;}
原创粉丝点击