利用栈来进行操作
创建栈,初始化,入栈,出栈
typedef struct
{
int *base;
int *top;
int stacksize;
}SqStack;
//顺序栈初始化
int IninStack(SqStack &S)
{
S.base=new int[MAXSIZE];
if(!S.base)
return -1;
S.top=S.base;
S.stacksize=MAXSIZE;
return 1;
}
//入栈
int Push(SqStack &S,int e)
{
if(S.top-S.base==S.stacksize)
return -1;
*S.top=e;
S.top++;
}
//出栈
int Pop(SqStack &S,int &e)
{
if(S.top==S.base)
return -1;
--S.top;
e=*S.top;
}
十进制转换为八进制函数
当十进制数不为零时,进行下列操作
把N与8求余得数压入栈
N更新为N与八得商
当栈非空时
弹出栈顶元素e
输出e
void conversion(int N)
{
SqStack S;
IninStack(S);
int e;
while(N)
{
Push(S,N%8);
N=N/8;
}
printf("转换成八进制数后为:\n");
while(S.top!=S.base)
{
Pop(S,e);
printf("%d",e);
}
}
完整代码: