В следующей функции. Я попытался использовать стек и реализовать с использованием массивов. Я сделал создание стека, push, pop, функции. Но при компиляции он показывает ошибку. пожалуйста, помогите мне выяснить, в чем проблема?Какая ошибка в коде?
#include <stdio.h>
#include <assert.h>
#include <stdlib.h>
struct stack_struct {
char a[100];
int top;
};
typedef struct stack_struct *stack;
stack charc;
stack createstack() {
stack s = (stack) malloc(sizeof(struct stack_struct));
s->top = -1;//initialize the stack
return s;
}
void push(stack s, char x) {
s->top++;
s->a[s->top] = x;
}
char pop(stack s) {
assert(s->top > 0);
char x;
x = s->a[s->top];
s->top--;
return x;
}
void printstack(stack s) {
while (s->top != -1) {
printf("%c", s->a[s->top]);
s-> top--;
}
void main() {
charc = createstack();
push(charc, 3);
printstack(charc);
pop(charc);
printstack(charc);
push(charc, 4);
printstack(charc);
push(charc, 5);
printstack(charc);
push(charc, 6);
printstack(charc);
push(charc, 7);
printstack(charc);
}
}
Что такое ошибка и номер строки? –
Возможно, не связаны, но вы не должны набрасывать 'malloc' – UnholySheep
Скрывающие указатели с' typedef' являются склонными к ошибкам, считаются плохой практикой, затрудняют чтение кода ... – chqrlie