SWUST OJ(961)

时间:2023-01-24 16:18:54

进制转换问题

 #include<stdio.h>
#include<stdlib.h> #define STACK_SIZE 100
#define STCK_INCREMENT 10 typedef struct
{
int *base;
int *top;
int stacksize;
}SqStack; void InitStack(SqStack &S)
{
//为栈申请空间
S.base = (int*)malloc(STACK_SIZE * sizeof(int));
if (!S.base)
{
exit(-);
}
S.top = S.base;
S.stacksize = STACK_SIZE;
} void Push(SqStack &S, int e)
{
if ((S.top - S.stacksize) >= S.base) //栈满追加空间
{
S.base = (int*)realloc(S.base, (S.stacksize + STCK_INCREMENT) * sizeof(int));
if (!S.base)
{
exit(-);
}
S.top = S.base + S.stacksize;
S.stacksize += STCK_INCREMENT;
} *S.top++ = e;
} int Pop(SqStack &S, int &e)
{
if (S.base == S.top)
{
return ;
}
e = *--S.top;
return ;
} int main()
{
int n, e;
scanf("%d", &n);
SqStack S;
InitStack(S);
while (n)
{
Push(S, n % );
n = n / ;
} while ()
{
int status = Pop(S, e);
if (!status)
{
break;
}
printf("%d", e);
}
return ;
}

方法二:

 #include <iostream>
#include <stack> using namespace std; int main()
{
stack<int> mstack; int n;
cin>>n;
while(n)
{
mstack.push(n%);
n = n/;
} while(!mstack.empty())
{
cout<<mstack.top();
mstack.pop();
}
return ;
}