萌新,学了以C++为基础的数据结构,用C++没问题,类似的代码修改C出错了,不知错在哪,求大佬帮忙
//用栈将十进制转换为八进制 //C #include<stdio.h> #define MAXSIZE 99 typedef int Status; typedef struct { int *base; int *top; int stacksize; }SqStack; SqStack S;//全局变量 Status InitStack()//初始化栈 { int num[MAXSIZE]; S.top = S.base = num; S.stacksize = MAXSIZE; return 1; } Status Push(int e)//入栈 { if (S.top - S.base == S.stacksize) return 0; *(S.top) = e; S.top++; return 1; } Status Pop()//出栈 { int num; if (S.top == S.base) return 0; num = *--(S.top); return num; } Status conversion(int N) { InitStack(); while (N) { Push(N % 8); N = N / 8; } printf_s("输出八进制的数:"); while (S.top != S.base) { printf_s("%d", Pop()); } } int main() { int D; printf_s("输入一个十进制的数:"); scanf_s("%d", &D); if (D > 0) conversion(D); else printf_s("ERROR\n"); system("pause"); }
入栈有问题,不知是什么问题