#include<iostream>
#include"malloc.h"
#include<string>
#define MAXSIZE 50//初始最大容量
#define STACKINCREMENT 10//每次增加的容量
using namespace std;
typedef struct Stack
{
int data[MAXSIZE];
int top;
}SeqStack, * PSeqStack;
//初始化
PSeqStack Init_SeqStack(void)
{
PSeqStack S = (PSeqStack)malloc(sizeof(SeqStack));
if (S)
{
S->top = -1;
}
return S;
}
//判空
int empty(PSeqStack s)
{
if (s->top == -1)
{
return 1;
}
return 0;
}
//入栈
int Push(PSeqStack S, int x)
{
if (S->top == MAXSIZE - 1)
{
return 0;
}
else
{
S->top++;
S->data[S->top] = x;
return 1;
}
}
//出栈
int Pop_SeqStack(PSeqStack S, int* e)
{
if (empty(S))
{
return 0;
}
else
{
*e = S->data[S->top];
S->top--;
return 1;
}
}
//取栈顶元素
int GetTop_SeqStack(PSeqStack S, int* m)
{
if (empty(S))
{
return 0;
}
else
{
*m = S->data[S->top];
return 1;
}
}
//销毁栈
void Destroy_SeqStack(PSeqStack* S)
{
if (*S)
{
free(*S);
}
*S = NULL;
return;
}
int Conversation(int n, int r)
{
PSeqStack S;
int x;
S = Init_SeqStack();
if (!S)
{
cout << "栈初始化失败" << endl;
return 0;
}
if (!r)
{
cout << "基数不能为零" << endl;
return 0;
}
while (n)
{
Push(S, n % r);
n /= r;
}
while (!empty(S))
{
Pop_SeqStack(S, &x);
cout << x;
}
Destroy_SeqStack(&S);
return 1;
}
int main()
{
int n = 0;
int r = 0;
cout << "请输入要转换进制的数和转换的进制" << endl;
cin >> n >> r;
Conversation(n, r);
}