📄 conversion.cpp
字号:
#include <stdio.h>
#include <malloc.h>
#include <string.h>
#define STACK_INIT_SIZE 100;
#define STACKINCREMENT 10;
#define OVERFLOW 0
#define OK 1
#define ERROR 0
typedef struct
{
int *base;
int *top;
int stacksize;
} SqStack;
int InitStack (SqStack *S)
{// 构造一个空栈S
S->base = (int *)malloc( 100 * sizeof(int));
if (!S->base) return OVERFLOW; //存储分配失败
S->top = S->base;
S->stacksize = STACK_INIT_SIZE;
return OK;
};
int Push (SqStack *S, int e)
{
if (S->top - S->base >= S->stacksize) //栈满,追加存储空间
{
S->base = (int *) realloc ( S->base,
(S->stacksize + 10) *
sizeof (int));
if (!S->base) return OVERFLOW; //存储分配失败
S->top = S->base + S->stacksize;
S->stacksize += STACKINCREMENT;
};
*S->top++ = e;
return OK;
};
int Pop (SqStack *S, int *e)
{ // 若栈不空,则删除S的栈顶元素,
// 用e返回其值,并返回OK;
// 否则返回ERROR
if (S->top == S->base) return ERROR;
*e = *--S->top;
return OK;
};
bool StackEmpty(SqStack *S)
{
if (S->top - S->base == 0)
{return 1;}
else
{
return 0;
};
};
void conversion ()
{
SqStack S;
int N, e;
InitStack(&S);
printf ( "Please input the num\n");
scanf ("%d",&N);
while (N)
{
Push(&S, N % 8);
N = N/8;
};
while (!StackEmpty(&S))
{
Pop(&S, &e);
printf ( "%d", e );
};
printf ( "\n");
} // conversion
void main()
{
conversion();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -