In der folgenden Funktion. Ich habe versucht, Stack zu verwenden und mit Arrays zu implementieren. Ich machte create stack, push, pop, Funktionen. Aber beim Kompilieren zeigt sich ein Fehler. Bitte helfen Sie mir herauszufinden, was das Problem ist?Was ist der Fehler im Code?
#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);
}
}
Was ist der Fehler und die Zeilennummer? –
Wahrscheinlich nicht verwandt, aber Sie sollten 'malloc' nicht werfen – UnholySheep
Verbergen von Zeigern mit' typedef' ist fehleranfällig, als schlechte Praxis, macht Code schwerer zu lesen ... – chqrlie