Stack Pop не работает с самодельным определением стека с использованием LinkedLists - PullRequest
0 голосов
/ 26 сентября 2018

Функция 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.

...