#include <stdio.h>
#include <stdlib.h>
typedef int Status;
typedef int SElemType;
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
#define OK 1
#define ERROR 0
typedef struct
{
SElemType * base;
SElemType * top;
int StackSize;
}SqStack;
Status InitSqStack (SqStack &S)
{
S.base = (SElemType *)malloc(STACK_INIT_SIZE * sizeof(SElemType));
if(S.base == NULL) return ERROR;
S.top = S.base;
S.StackSize = STACK_INIT_SIZE;
return OK;
}
Status Push (SqStack &S,SElemType e)
{
if(S.top - S.base >= S.StackSize)
{
S.base = (SElemType *)realloc (S.base,(S.StackSize + STACKINCREMENT) * sizeof(SElemType));
if(S.base == NULL) return ERROR;
S.top = S.base + S.StackSize;
S.StackSize += STACKINCREMENT;
}
* S.top = e;
S.top++;
return OK;
}
Status Pop(SqStack &S,SElemType &e)
{
if(S.base == S.top) return ERROR;
S.top--;
e = *S.top;
return OK;
}
void main()
{
SqStack S;
SElemType N;
SElemType e;
if(InitSqStack(S) == ERROR)
{
printf("InitSqStack ERROR!\n");
}
printf("输出一个10#数:");
scanf("%d",&N);
while (N)
{
Push(S,N % 13);
N = N/13;
}
printf("转13#:");
while(S.top != S.base)
{
Pop(S,e);
printf("%d",e);
}
printf("\n");
system("pause");
}