《C数据结构》括号匹配实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
括号匹配
实验目的:
使用堆栈的存储结构实现括号匹配,即“(”与“)”必须成对出现、“[”与“]”必须成对出现
实验思路:
1、写出堆栈的相关操作函数,如:
创建【int InitStack( SqStack *S )】、
压入【int Push(SqStack *S,int e)】、
弹出【int Pop(SqStack *S,int *e)】、
销毁【void DestroyStack(SqStack *S)】、
判断是否为空【int StackEmpty(SqStack *S)】等。
2、堆栈的各操作函数完成后编写功能函数——括号匹配函数【int
match(char *str)】。
3、括号匹配函数之后编写主函数,使用上述函数实现括号匹配的功能
核心代码:
1、括号匹配函数:
int match(char *str){
int i,e;
SqStack S;
InitStack(&S);
for(i=0;;i++){
if(str[i]=='\0')break;
if(str[i]=='('||str[i]=='['){
Push(&S,str[i]);
};
if(str[i]==')'){
Pop(&S,&e);
if(e=='('){
continue;
}else{
Push(&S,e);
}
}
if(str[i]==']'){
Pop(&S,&e);
if(e=='['){
continue;
}else{
Push(&S,e);
}
}
}
if(StackEmpty(&S)){
printf("恭喜您,括号匹配成功,多项式格式合法!\n");
}else{
printf("警告:多项式格式不合法!\n");
}
DestroyStack(&S);
return 1;
}
2、主函数:
int main(){
char str[100];
printf("请输入一个表达式:");
scanf("%s",&str);
match(str);
system("pause");
return 1;
}
功能演示:
1、输入:(3+45)*[32-5]/[2-5]
输出:恭喜您,括号匹配成功,多项式格式合法!