У вас есть небольшая проблема с вашим кодом.Попробуйте так:
boolean isABSimilar(A,B){
if (A.isEmptyStack() && B.isEmptyStack()) return true; // stacks are the same
if (A.isEmptyStack()) return false; // stacks are different
if (B.isEmptyStack()) return false;
if (A.top() != B.top()) return false;
A_element = A.pop(); // grab elements
B_element = B.pop();
answer = isABASimilar(A, B); // ckech remaining stack
A.push(A_element); // restore
B.push(B_element);
return answer; // return answer
}
Обратите внимание, что рекурсивный метод, подобный приведенному выше, должен использоваться только тогда, когда вы знаете, что размер стеков довольно мал.
Также обратите внимание, что приведенный выше «код» не может быть скомпилирован как код C по ряду причин.Пример:
boolean isABSimilar(A,B)
не является действительным прототипом функции
A_element
, а B_element
и answer
не определены
Вы должны исправить это перед компиляцией.
В C нет встроенного типа стека, поэтому я предполагаю, что это пользовательский тип в вашем коде.Что-то вроде:
struct Stack
{
... Member function pointers
... Member data
};
В этом случае ваша функция должна выглядеть следующим образом:
int isABSimilar(struct Stack A, struct Stack B){
int answer;
int A_element; // I just assume that data type is int
int B_element; // but it can be other types (OP never told us)
... the code from above