Где я ошибаюсь в этой операции со стеком? - PullRequest
0 голосов
/ 27 мая 2020

Это фрагмент моего кода, работа которого не завершается из-за ошибки l oop. Я хочу проверить элементы массива, которые находятся в виде стека или нет, это пример ошибки, вызванной.

#include<bits/stdc++.h>
using namespace std;

int main()
{
    int arr[]={5,4,3,2,1}, k=0;
    stack <int> s;
    for(int i=1; i<=5; i++)
    {
        s.push(i);
        while(s.top()==arr[k] && s.size()>0){
            s.pop();
            ++k;
        }
    }
    cout<<"finished";

    return 0;
}

1 Ответ

3 голосов
/ 27 мая 2020

Проблема в том, что в пустом стеке нет top().

    while(s.top()==arr[k] && s.size()>0){

Исправление - отменить проверку условий.

    while(s.size()>0 && s.top()==arr[k]){
...