Это мой код, и он не работает.Есть идеи?Я не могу изменить основную функцию или любое из названий функций или параметров на основе данного назначения, я могу только изменить содержание функций.Я супер застрял.Любая помощь приветствуется.Я запустил GDB для функции push, и она, кажется, работает отлично.Однако функция стека печати считает, что длина массива равна 0, что совершенно бесполезно.Большое спасибо!
typedef int *stack;
void push (stack st, int num)
{
int len = st[0];
st[len+1]=num;
st[0]++;
}
int pop(stack st)
{
int len = st[0], x;
x = st[len];
st[0]--;
return x;
}
void printstack(stack st)
{
int i, len= st[0];
for(i=1;i<=len;i++)
{
printf("%d ", st[i]);
}
}
stack makestack()
{
stack n;
int arr[20];
n = malloc(sizeof(stack));
arr[0]=0;
n= arr;
return n;
}
int main()
{
stack s;
stack t;
s = makestack();
t = makestack();
int x;
push(s, 4);
push(s, 6);
push(t, 7);
push(t, 5);
printstack(s);
printstack(t);
x = pop(s);
printf("%d popped from s\n", x);
printstack(s);
printstack(t);
}