Ich versuche einen Stapel zu erstellen, wo ich ganze Zahlen hineinschieben kann. Bisher habe ich das:Wie erstelle ich einen leeren Stapel?
#include <stdio.h>
#define N 20
typedef struct {
int data[N]; // array of at most size N
// N should be a constant declared globally
int top;
} stack_t;
void push(stack_t *stack, int element);
int main(){
void push(stack_t *stack, int n) {
if (stack->top == N - 1) {
printf("Warning: Stack is full, You can't add'\n");
return;
} else {
stack->data[++stack->top] = n;
}
}
stack_t * e_stack; // Empty stack created
push(e_stack, 2);
}
Allerdings gibt dieser Code einen Laufzeitfehler. Ich nehme an, es liegt daran, dass dieser Teil falsch ist: stack_t * e_stack; // Leere Stapel erstellt
(das wahrscheinlich nicht schaffen ein leerer Stack)
Aber ich weiß, wie es ist falsch
Was ist mit der geschachtelten Funktion thingy? Sie sollten die Funktion 'push()' außerhalb von 'main()' definieren. Nur GCC im schlaffen Modus erlaubt verschachtelte Funktionen - sie sind nicht portierbar und generell böse und du solltest sie nicht verwenden, wenn du C lernst (und wahrscheinlich nicht benutzt, nachdem du C gelernt hast). –