Можете ли вы определить ошибку?
Компилятор может обнаружить ошибку быстрее, чем переполнение стека.
OP не компилируется со всеми включенными предупреждениями или использует слабый компилятор
Включить все предупреждения, чтобы сэкономить время.
int deq(stack*s1, stack*s2)
и int pop(stack *s)
имеют одинаковую проблему.
Обычное уменьшение в таких случаях warning: control reaches end of non-void function [-Wreturn-type]
Убедитесь, что каждый путь к функции возвращает значение.
int pop(stack *s) {
if (s->top == -1) {
printf("UNDERFLOW"); // Notice, no return
} else {
return s->arr[s->top--];
}
}
Также push(&s1, ele);
используется до объявления. Это делает для противоречивой подписи функции. Объявите или определите push()
перед использованием. Вероятно, неопределенное поведение (UB), и это делает код ненадежным.
Рекомендую печатать '\n'
чаще.
// printf("entering");
printf("entering\n");
// or
puts("entering"); // \n automatically added.