社区讨论

runtime error从何而来

P4387【深基15.习9】验证栈序列参与者 5已保存回复 9

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
9 条
当前快照
1 份
快照标识符
@m67l6xmn
此快照首次捕获于
2025/01/22 15:32
去年
此快照最后确认于
2025/11/04 11:02
4 个月前
查看原帖
码风一般,已经尽量写了注释,希望大家尽量帮我看一下
CPP
#include<stdio.h>
#include<queue>
#include<stack>
using namespace std;
stack< int > enter;//入栈序列
queue< int > left;//出栈序列
int main(void) {
	int n = 0;
	int a[100005] = {}, b[100005] = {};
	scanf("%d", &n);//读入询问次数
	for (int i = 1; i <= n; i++) {
		int len = 0;
		scanf("%d", &len);//读入长度
		for (int j = 1; j <= len; j++) {
			scanf("%d", &a[j]);//读入每个入栈元素
		}
		for (int j = 1; j <= len; j++) {
			scanf("%d", &b[j]);//读入出栈元素
			left.push(b[j]);//加入队列
		}
		for (int j = 1; j <= len; j++) {
			enter.push(a[j]);//按照入栈顺序加入
			while (enter.top() == left.front()) {//一旦和出栈序列首元素相同,就马上出栈,并且检查之前的元素
				enter.pop();//出栈
				left.pop();//更新出栈顺序
				if ((!left.empty()) && (!enter.empty()) == 0) {
					break;//空了就跳出循环
				}
			}
		}
		if (!enter.empty()) {
			printf("No\n");//如果不能是空栈,就是No
		}
		else {
			printf("Yes\n");//是空栈即为Yes
		}
		while (!enter.empty()) {
			enter.pop();//清空,为下一次做准备
		}
		while (!left.empty()) {
			left.pop();//清空,为下一次做准备
		}
	}
	return 0;
}
请问为什么这段代码提交后会出现“Segmentation fault with invalid memory reference.”的runtime error报错(多次遇到这个问题,求教大家,谢谢

回复

9 条回复,欢迎继续交流。

正在加载回复...