这下面是报错的代码跟图片是在push函数那里报错的,这个代码是用栈转换进制,我也不知道有没有实现,然后栈的基本功能这些代码都是从ppt上复制的,反正就是那里一直出bug,刚开始用的malloc,后面换成calloc也不行,xdm到底哪里出错了
#include <stdio.h>
#include <stdlib.h>
#define INITSIZE 100
typedef int SElemType;
typedef struct
{
int top;
SElemType *base;
int stacksize;
} sqstack;
int main()
{
int stackempty(sqstack S);
int initstack(sqstack * S);
int gettop(sqstack S, SElemType * e);
int push(sqstack * S, SElemType x);
int pop(sqstack * S, SElemType * e);
sqstack S;
int n, m;
int*e= (int *)calloc(1, sizeof(int));
printf("输出数字:");
scanf("%d", &n);
printf("输出想要转换的进制:");
scanf("%d", &m);
while (n)
{
push(&S, n % m);
printf("%d ", n % m);
n /= m;
}
while (!stackempty(S))
{
pop(&S, e);
printf("%d ", *e);
if (*e >= 10)
switch (*e)
{
case 10:
printf("A");
break;
case 11:
printf("B");
break;
case 12:
printf("C");
break;
case 13:
printf("D");
break;
case 14:
printf("E");
break;
case 15:
printf("F");
break;
}
}
return 0;
}
int initstack(sqstack *S)
{
S->base = (SElemType *)calloc(INITSIZE ,sizeof(SElemType));
if (S->base)
return -1;
S->top = 0;
S->stacksize = INITSIZE;
return 0;
}
int gettop(sqstack S, SElemType *e)
{
if (S.top == 0)
{
printf("Stack is empty!\n");
return -1;
}
*e = S.base[S.top - 1];
return 0;
}
int push(sqstack *S, SElemType x)
{
if (S->top == S->stacksize)
{
S->base = (SElemType *)realloc(S->base, (S->stacksize + 1) * sizeof(SElemType));
if (!S->base)
return -1;
S->stacksize++;
}
S->base[S->top] = x;
return 0;
}
int pop(sqstack *S, SElemType *e)
{
if (S->top == 0)
{
printf("Stack is empty");
return -1;
}
*e = S->base[--S->top];
return 0;
}
int stackempty(sqstack S)
{
if (S.top == 0)
return 1;
else
return 0;
}