Сравнение стеков пар, приводящих к всегда равным

Я пытаюсь сравнить два стека, чтобы увидеть, равны ли они. К сожалению, этот код делает так, что все мои сравнения говорят, что стеки равны, даже если стеки не совпадают.

Stack_implementation.cpp фрагмент кода:

int DoubleStack::operator==(DoubleStack& rhs)
{
int equal = 1;
for (int i = 0; i <= tos; i++)         //tos is the top of the stack indicator
{                                      //it tells how big the stack is
if (data[i] != rhs.data[i])
{
equal = 0;
break;
}
}
return equal;
}

main.cpp соответствующий фрагмент:

{
cout << "Comparing stacks..." << endl;
if (stack1 == stack2)
cout << "stack1 = stack2." << endl;
else
cout << "stack1 != stack2." << endl;
}

Выход всегда
stack1 = stack2

Кто-нибудь знает, что не так?

-2

Решение

Первая проверка должна быть на размер стеков; если размеры не совпадают, стеки не могут быть равными. Написанный код может выходить за пределы одного из стеков.

Вы также можете вернуться, как только найдете другой предмет. Нет необходимости продолжать цикл.

bool DoubleStack::operator==(DoubleStack& rhs)
{
if (tos != rhs.tos) {
return false;
}

for (int i = 0; i <= tos; i++)         //tos is the top of the stack indicator
{                                      //it tells how big the stack is
if (data[i] != rhs.data[i])
{
return false;
}
}
return true;
}
1

Другие решения


По вопросам рекламы [email protected]