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

来源:互联网 发布:倩女幽魂手游多开软件 编辑:程序博客网 时间:2024/06/15 23:58

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

Time Limit: 1000MS Memory Limit: 65536KB
Submit Statistic

Problem Description

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

Input

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

Output

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

Example Input

12798

Example Output

2377

Hint

Author

#include <iostream>
#include<stdio.h>
#include <stdlib.h>
#include <string>
using namespace std;
#define maxsize 10000
#define numsize 10000
typedef int element;
typedef int status;
typedef struct
{
    element *top;
    element *base;
    int stacksize;
}sqstack;
status initstack(sqstack &s)
{
    s.base=(element *)malloc(maxsize * sizeof(element));
    if(!s.base)return -1;
    s.top=s.base;
    s.stacksize=maxsize;
    return 0;
}
void clearstack(sqstack &s)
{
    s.top=s.base;
}
void push(sqstack &s,element e)
{
    if(s.top-s.base>=s.stacksize)
    {
        s.base=(element *)realloc(s.base,maxsize+numsize*sizeof(element));
        s.top=s.base+maxsize;
        s.stacksize+=numsize;
    }
    *(s.top)=e;
    s.top++;
}
void pop(sqstack &s)
{
    s.top--;
}
element get(sqstack &s)
{
    element e;
    e=*(s.top-1);
    return e;
}
status emptystack(sqstack &s)
{
    if(s.base==s.top)
        return 1;
    else
        return 0;
}
void putstack(sqstack &s)
{
    while(s.top>s.base)
    {
        printf("%d",*(s.top-1));
        s.top--;
    }
}
int main()
{
    sqstack s;
    initstack(s);
    int n,m;
    cin>>n>>m;
    if(n==0)
        cout<<"0"<<endl;
    else
    {
         while(n)
         {
             push(s,n%m);
             n=n/m;
         }
         putstack(s);
         printf("\n");
    }
    return 0;
}