数据结构实验之栈一:进制转换

来源:互联网 发布:2017骂人网络流行词 编辑:程序博客网 时间:2024/06/13 11:56

数据结构实验之栈一:进制转换

Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^

题目描述

输入一个十进制整数,将其转换成对应的R(2<=R<=9)进制数,并输出。

输入

第一行输入需要转换的十进制数;
第二行输入R。

输出

输出转换所得的R进制数。

示例输入

12798

示例输出

2377

提示

 

来源

 

示例程序

 

自己创建模拟栈的操作

#include <iostream>#include <stdlib.h>#include <string>using namespace std;#define stackmax 10000#define stacknum 10000typedef 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;}



0 0
原创粉丝点击