数据结构实验之栈一:进制转换
Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^
题目描述
输入一个十进制整数,将其转换成对应的R(2<=R<=9)进制数,并输出。
输入
第一行输入需要转换的十进制数;
第二行输入R。
第二行输入R。
输出
输出转换所得的R进制数。
示例输入
1279 8
示例输出
2377
提示
来源
示例程序
自己创建模拟栈的操作
#include <iostream>
#include <stdlib.h>
#include <string>
using namespace std;
#define stackmax 10000
#define stacknum 10000
typedef int element;
typedef struct
{
element * top;
element * base;
int stacksize;
}qstack;
int initstack(qstack &s)
{
s.base = (element *)malloc(stackmax * sizeof(element));
if(!s.base)
return -1;
s.top = s.base;
s.stacksize = stackmax;
return 0;
}
int pushstack(qstack &s,int n)
{
if(s.top - s.base >= s.stacksize)
{
s.base = (element *)malloc(stackmax * sizeof(element));
if(!s.base)
return -1;
s.top = s.base + s.stacksize;
s.stacksize = s.stacksize + stacknum;
}
int i, e;
*s.top++ = n;
return 0;
}
int conversion(qstack &s, int n, int r)
{
int t;
while(n)
{
pushstack(s, n % r);
n = n / r;
}
return 0;
}
int putstack(qstack &s)
{
while(s.top > s.base)
{
cout << *(s.top - 1);
s.top--;
}
return 0;
}
int main()
{
qstack s;
initstack(s);
int n,r;
cin >> n >> r;
conversion(s,n,r);
putstack(s);
return 0;
}
调用栈函数
#include <iostream>
#include <stdlib.h>
#include <stack>
using namespace std;
int main()
{
int n, r;
stack<int>s;
cin >> n;
if(n == 0)
cout << "0" << endl;
else
{
cin >> r;
while(n)
{
int x = n % r;
n = n / r;
s.push(x);
}
while(!s.empty())
{
cout << s.top();
s.pop();
}
cout << endl;
}
return 0;
}