Я реализовал стек в C следующим образом. И программа работает нормально для трех нажатий, но когда я пытаюсь набрать sh более 3-х элементов, программа выполняется, и результат распечатывается, но затем появляется сообщение об ошибке, сообщающее, что программа перестала работать
Мой код выглядит следующим образом:
#include <stdio.h>
#include <stdlib.h>
#define MAX 50
//typedef char stackEntryType;
typedef enum{FALSE,TRUE} Boolean;
typedef struct stack{
int top;
int entry[MAX];
}stack;
void createStack(stack *s){
s->top=-1;
}
Boolean IsStackEmpty(const stack *s){
return(s->top==-1);
}
Boolean IsStackFull(const stack *s){
return(s->top==MAX-1);
}
void push(stack *s,int item){
if(IsStackFull(s)){
printf("Stack is full\n");
exit(1);
}else{
s->entry[++s->top]=item;
printf("%d pushed to stack\n",item);
}
}
void pop(stack *s)
{
int item;
if(IsStackEmpty(s))
{
printf("Stack is empty\n");
exit(1);
}
else{
item=s->entry[s->top--];
printf("%d popped from the stack",item);
}
}
void main()
{
stack *s;
createStack(&s);
push(&s,1);
push(&s,2);
push(&s,3);
push(&s,4);
pop(&s);
}
Может кто-нибудь решить эту проблему?