无法指出发生分段错误的位置



每当我遇到查询"Q"时,我都应该打印堆栈中最大的元素(在这里使用矢量实现堆栈(,当我针对一些示例测试用例运行它时,它工作正常,但每当我提交代码时,它都会给我分段错误。

当查询为 A 10 时,将 10 加到堆栈, 当查询是堆栈中的 R pop 元素时, 当查询为 Q 时,打印堆栈中最大的元素

#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

我已经编辑了这篇文章,您可以检查示例输入,但代码确实适用于这些示例输入

您的第一个任务应该是生成导致崩溃的输入。您对输入中有多少AR做出了哪些假设?

以下是在我的系统上产生分段错误的输入:

1
2
R
Q

希望修复现在对您来说是显而易见的。

相关内容

  • 没有找到相关文章

最新更新