我在CSDN上学的是C语言的栈,为什么在洛谷上提交C++才能过
查看原帖
我在CSDN上学的是C语言的栈,为什么在洛谷上提交C++才能过
861113
wanan2203ouchengli楼主2023/8/2 15:42

我一直搜得都是C语言的代码,但是有大佬告诉我这是C++的

但是基本找不到C语言的题解来借鉴

#include<stdio.h>
#include<stdlib.h>

typedef struct N {
	int size;
	char* top;
	char* base;
}N;

N CSH(N &l) {
	l.top = l.base = new char[255];
	l.size = 255;
	return l;
}

int PUSH(N &l, char e) {
	if (l.top - l.base == l.size) {
		return 0;
	}
	*l.top++ = e;
	return 1;
}

int POP(N &l) {
	if (l.top == l.base) {
		return 0;
	}
	else {
		l.top--;
		return 1;
	}
}

int main() {
	N l;
	int  b = 0;
	l = CSH(l);
	char a[300];
	scanf("%s", a);
	for(int i=0;a[i]!='@';i++){
		if (a [i] == '(') {
			PUSH(l, a[i]);
			b++;
		}
		else {
			if (a[i] == ')') {
				if (b != 0) {
					POP(l);
					b--;//
				}
				else {
					PUSH(l, a[i]);
				}
			}
		}
	}
	if (l.top == l.base) {
		printf("YES");
	}
	else {
		printf("NO");
	}
	return 0;
}

2023/8/2 15:42
加载中...