《C数据结构》括号匹配实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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]

输出:恭喜您,括号匹配成功,多项式格式合法!

相关文档
最新文档