Функция pop для моего стека не работает.Я включаю код для функции поп.Я знаю, что могу использовать стековую библиотеку в C ++, но я хочу сделать свою собственную, чтобы лучше ее понять.Это не удаление узлов в стеке и неправильное извлечение двойника.Все остальное в стеке работает нормально.
double Stack::Pop()
{
assert(!IsEmpty());
double n = topPtr.FirstNode();
topPtr.DeleteNode( n );
return n;
}
void LinkedList::DeleteNode( double x )
{
nodeptr prev, curr;
curr = start;
while( curr != NULL && x > curr->info )
{
prev = curr;
curr = curr->next;
}
if( x == curr->info )
{
if( curr == start )
start = start->next;
else
prev->next = curr->next;
delete curr;
count--;
}
}
//Below is where I use the pop function
roperand = rpnStack.Pop();
loperand = rpnStack.Pop();
cout << loperand << " <Left Right> " << roperand << endl;
switch (op){
case 0:
answer = loperand + roperand;
cout << answer << endl;
rpnStack.Push(answer);
break;
case 1:
answer = loperand - roperand;
rpnStack.Push(answer);
break;
case 2:
answer = loperand * roperand;
rpnStack.Push(answer);
break;
case 3:
answer = loperand / roperand;
rpnStack.Push(answer);
break;
}
//This is the output I am getting
Please enter equation >> 5.5 5.5 +
Equation entered: 5.5 5.5 +
5<Left Right>5
10
Below is what is left in the stack.
10
5.5
5.5
5 левых и правых 5 должны быть как 5,5, так и вытолкнуты из стека, но они остаются, и значения, которые вытащены, равны 5, а не 5,5.Все переменные имеют тип double.