c++ - 无法指出发生分段错误的位置
问题描述
每当我遇到查询“Q”时,我应该打印堆栈的最大元素(在此处使用向量来实现堆栈),当我针对一些示例测试用例运行它时它工作得很好,但是每当我提交代码时,它都会给我分段错误.
当查询是 A 10将 10添加到堆栈中,当查询是 R从堆栈中弹出元素时,当查询是 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
解决方案
我已经编辑了您可以检查示例输入的帖子,但是代码对于这些示例输入确实有效
您的首要任务应该是生成导致崩溃的输入。你对输入中有多少A
s 和R
s 做了什么假设?
这是在我的系统上产生分段错误的输入:
1
2
R
Q
修复希望现在对您来说是显而易见的。
推荐阅读
- regex - 仅使用正则表达式从主页重定向并保留 UTM 参数
- excel - 从 Excel 粘贴到 Word 的 VBA 代码在某些 PC 上运行,在其他 PC 上返回错误 4198
- xamarin.forms - Xamarin 表单中的自定义标签渲染器:OnDraw 从未触发
- c# - 如何在“where”中使用实体框架中的数组值
- javascript - 实例化通过 jQuery.getScript 加载的类时遇到 ReferenceError
- clojure - clojure 是否具有合并如果存在的功能?
- uuid - 如何在 Spock + PowerMock 中模拟 UUID?
- javascript - JSON 的强类型类
- angular - Laravel 响应不包含 Set-Cookie 标头
- python-3.x - 计算字典中每个键的每个值的频率,并将计数信息放入数据框中