任务
假设一个表达式有英文字母(大、小写)、数字、四则运算符(+,-,*,/)和左右小括号、中括号、大括号构成,以“@”作为表达式的结束符。请编写一个程序检查表达式中的左右大中小括号是否匹配,若匹配,则返回“Yes”;否则返回“No”。(禁止使用 STL 库,包括 string 头文件)
输入格式
输入文件中第一行是表达式数目 N
之后是需要进行括号配对检测的 N 个表达式。
输出格式
N 行输出分别对应输入的 N 行表达式,每行都为“Yes”或“No"
源代码
链栈基本操作
#include<iostream>
using namespace std;
typedef struct StackList{
char ope; //储存括号的链栈节点
struct StackList* next;
}Stack;
Stack* PushStack(Stack** S,char c){//将括号进栈
Stack *p=(Stack*)malloc(sizeof(Stack));
if(!p){
printf("申请空间失败");
return NULL;
}
p->ope=c;
if(!*S){
*S=p;
(*S)->next=NULL;
}
else{
p->next=*S;
*S=p;
}
return *S;
}
char PopStack(Stack** S){//将栈顶括号出栈
char c;
if(!*S){
printf("链栈为空");
return 0;
}
Stack *p=*S;
c=p->ope;
(*S)=(*S)->next;
free(p);
return c;
}
char GetStack

该文章描述了一个C语言程序,用于检查输入的表达式中括号是否匹配,通过链栈数据结构实现。程序定义了StackList结构和相关操作,如PushStack、PopStack和BracketTest,用于判断括号的正确闭合。
最低0.47元/天 解锁文章
4886

被折叠的 条评论
为什么被折叠?



