qq_40227644 2017-10-18 14:50 采纳率: 100%
浏览 1031
已采纳

新手求解 数据结构 十进制转八进制 哪个地方错了

#include
#include
#include
#include
#include

#define OK 1
#define ERROR 1
#define STACK_INIT_SIZE 100 //存储空间初始分配量
#define STACKINCREMENT 10 //存储空间分配增量

typedef int SElemType;
typedef int Status ;

typedef struct {
SElemType * base; // 在栈构造之前和销毁之后,base的值为null
SElemType * top; // 栈顶指针
int stacksize; // 当前已分配的存储空间,以元素为单位
}SqStack;
Status InitStack (SqStack &S){
//构造空栈S
if(!S.base) exit (OVERFLOW);//存储分配失败
S.top = S.base;
S.stacksize = STACK_INIT_SIZE;
return OK;
}//InitSTACK
Status Push ( SqStack &S, SElemType e){
//插入元素e为新的栈顶元素
if(S.top - S.base >= S.stacksize){//判断是否栈满,栈满,追加存储空间
S.base = (SElemType *)realloc(S.base,(S.stacksize + STACKINCREMENT) * sizeof (SElemType));
if(!S.base)exit (OVERFLOW);//存储分配失败
S.top = S.base + S.stacksize ;
S.stacksize += STACKINCREMENT;
}
*S.top++ = e;
return OK;
}//Push
int StackEmpty(SqStack S)
{ // 查看栈是否为空
if(S.top == S.base) exit(OVERFLOW);
else return 1;
}//Empty
Status Pop( SqStack &S , SElemType &e){
//若栈不空,则删除S的栈顶元素,用e返回其值,并返回OK,否则返回ERROR
if(S.top == S.base) return 1;
e = *--S.top;
return OK;
}//Pop
void conversion()
{//将十进制转化为八进制
SqStack S;
int N;
int e;
InitStack(S);
printf("输入N的值:");
scanf("%d",&N);
printf("转换后的值:");
while(N)
{
Push(S,N%8);
N=N/8;
}
while(StackEmpty(S))
{
Pop(S,e);
printf("%d\n",e);
}
}
int main()
{
conversion();
getch();
return 0;
}

  • 写回答

1条回答 默认 最新

  • siyelangshao 2017-10-19 07:50
    关注

    (1)
    Status InitStack (SqStack &S){
    //构造空栈S
    S.base = (SElemType * )malloc(STACK_INIT_SIZE * sizeof (SElemType)); //先分配内存,与S.stacksize = STACK_INIT_SIZE;保持一致。
    if(!S.base) exit (OVERFLOW);//存储分配失败
    S.top = S.base;
    S.stacksize = STACK_INIT_SIZE;
    return OK;
    }//InitSTACK

    (2)
    Status Push ( SqStack &S, SElemType e){

    • S.top++ = e; 结合后面逻辑看此处是* ++S.top = e;,先增加top,在放值 } (3) Status Pop( SqStack &S , SElemType &e){ //若栈不空,则删除S的栈顶元素,用e返回其值,并返回OK,否则返回ERROR if(S.top == S.base) return 1; e = *S.top--; //先取值再出栈 return OK; }//Pop
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 代码的修改,添加和运行完善
  • ¥15 krpano-场景分组和自定义地图分组
  • ¥15 lammps Gpu加速出错
  • ¥15 关于PLUS模型中kapaa值的问题
  • ¥15 关于博途V17进行仿真时无法建立连接问题
  • ¥15 机器学习教材中的例题询问
  • ¥15 求.net core 几款免费的pdf编辑器
  • ¥15 为什么安装HCL 和virtualbox之后没有找到VirtualBoxHost-OnlyNetWork?
  • ¥15 C# P/Invoke的效率问题
  • ¥20 thinkphp适配人大金仓问题