Невозможно указать, где происходит ошибка сегментации - PullRequest
0 голосов
/ 29 сентября 2019

Я должен печатать самый большой элемент стека (используя vector для реализации стека здесь) всякий раз, когда я сталкиваюсь с запросом «Q», он работает просто отлично, когда я запускаю его для некоторых примеров тестовых случаев, но всякий раз, когда я отправляю код, который он даетошибка сегментации.

, когда запрос A 10 Добавить 10 в стек , когда запрос R элемент pop из стека , когда запрос Q printсамый большой элемент в стеке

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


int main() {
   int t=0;
    cin>>t;

    for(int x=0;x<t;x++){
      printf("Case %d:\n",x+1);  
     int q=0;
        cin>>q;
        vector<int> myvec;
        vector<int> trackvec;
        int top=-1;

        for(int i=0;i<q;i++){
            string s;
            cin>>s;
            if(s=="A"){
              int num=0;
                cin>>num;
                myvec.push_back(num);
                if(i==0){trackvec.push_back(num);top++;}
                else{
                    if(num>trackvec[top]){
                     trackvec.push_back(num);   
                        top++;
                    }                   
                    else{
                        trackvec.push_back(trackvec[top]);
                        top++;
                    }
                }

            }

            else if(s=="R"){
                myvec.pop_back();
                trackvec.pop_back();
                top--;
            }
            else if(s=="Q" && top==-1){
                cout<<"Empty"<<endl;
            }
            else if(s=="Q"){
                cout<<trackvec[top]<<endl;
            }


    }
}
}
The trackvec here is to keep track of the largest element 

Sample input:
2
7
A 10
A 5
Q
A 100
Q
R
Q
6
A 5
Q
R
Q
R
R

1 Ответ

0 голосов
/ 30 сентября 2019

Я отредактировал публикацию, в которой вы можете проверить примеры входных данных, но код хорошо работает для этих примеров входных данных

Ваша первая задача должна заключаться в создании ввода, вызывающего сбой,Какие предположения вы делаете относительно количества A s и R s на входе?

Вот вход, который вызывает ошибку сегментации в моей системе:

1
2
R
Q

Исправление, надеюсь, очевидно для вас сейчас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...