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

来源:互联网 发布:Java web 项目开发文档 编辑:程序博客网 时间:2024/04/24 03:39

Think:
模拟栈, 每次都将 余数 存入栈中, 然后 出栈即可

Problem Description

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

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

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

1279
8
Example Output

2377

#include<bits/stdc++.h>using namespace std;#define STACK_INIT_SIZE 1050#define STACKINCREMENT 50#define ERROR 0//#define OK 1//#define OVERFLOW -1typedef int Elemtype;typedef struct{    Elemtype *base;    Elemtype *top;    int stacksize;} sqstack;int a[10086];int b[10086];void Initstack(sqstack &L);void Push(sqstack &L, Elemtype key);int Pop(sqstack &L, Elemtype key);bool Ifempty(sqstack &L);int main(){    int N , R;    cin >> N >> R;    sqstack L;    Initstack(L);    if (N == 0)        cout << "0";    while(N)    {        int key = N % R;        N/=R;        Push(L, key);    }    while(!Ifempty(L))    {        int key = Pop(L, key);        cout << key;    }    cout << endl;}void Initstack(sqstack &L){    L.base = (Elemtype *)malloc(STACK_INIT_SIZE * sizeof(Elemtype));    if (!L.base)        exit(-1);    else        L.top = L.base;    L.stacksize = STACK_INIT_SIZE;}void Push(sqstack &L, Elemtype key){    if(L.top - L.base >= L.stacksize)    {        L.base = (Elemtype *)realloc(L.base, (L.stacksize + STACKINCREMENT)*sizeof(Elemtype));        if(!L.base)        {            exit(-1);        }        L.top = L.base + L.stacksize;        L.stacksize += STACKINCREMENT;    }    *L.top ++ = key;}int Pop(sqstack &L, Elemtype key){    if (L.top == L.base)    {        return ERROR;    }    key = *(-- L.top);    return key;}bool Ifempty(sqstack &L){    if (L.base == L.top)        return true;    else        return false;}
原创粉丝点击