ошибка сегментации при поиске следующего большего элемента с использованием стека - PullRequest
0 голосов
/ 09 мая 2020

У меня есть массив, по которому я выполняю итерацию справа налево. Вы можете увидеть мою реализацию:

int arr[]{1,3,22,4,1,-3,3,7};
int n{sizeof(arr)/sizeof(int)};
vector <int> v;
stack <int> s;
for(int i{n-1} ; i >=0 ; i--){
    if(s.empty()){
        v.push_back(-1);
    }
    else if(arr[i]<s.top()){
        v.push_back(s.top());
    }
    else {
        while(arr[i]>=s.top() && s.size()>0){
            s.pop();
        }
        if(s.empty()){
            v.push_back(-1);
        }
        else{
            v.push_back(s.top());
        }
    }
    s.push(arr[i]);
}

Я не могу отлаживать, так как программа вылетает сразу после запуска сеанса отладки.

1 Ответ

1 голос
/ 09 мая 2020

Этот лог c выглядит очень запутанным. Вероятно, есть гораздо более чистый и выразительный способ написать то, что вы имеете в виду.

...