算法:括号匹配(栈的应用)-数据结构(7)

来源:互联网 发布:钢结构图纸及数据图片 编辑:程序博客网 时间:2024/06/05 06:46

一、问题描述

书上P49 3.2.2,如书上的描述就是对于输入的括号进行合法性校验。

二、数据结构和算法

1、栈数据结构(略)

参见数据结构(5)栈

2、算法实现

//括号匹配void ParathesesMatch(char * str){//传进来的是一串括号字符串SqStack stack;InitStack(stack);int i = 0,flag = 0;char e;while (str[i]){//字符串还有在的情况switch (str[i]){case '[':case '('://左括号的情况都是进栈的Push(stack,str[i]);i++;break;case ']':GetTop(stack,e);if (e == '['){//匹配成功Pop(stack,e);}else{//匹配失败的 应该结束flag = 1;}i++;break;case ')':GetTop(stack, e);if (e == '('){//匹配成功Pop(stack, e);}else{//匹配失败的 应该结束flag = 1;}i++;break;default:break;}if (flag){break;//结束循环}}if (StackEmpty(stack)){printf("匹配成功\n");}else{printf("匹配失败\n");}}

三、执行

//括号匹配char str1[20] = "[([][])]";ParathesesMatch(str1);char str2[20] = "[([][[][]]])]))";ParathesesMatch(str2);
输出:
匹配成功匹配失败请按任意键继续. . .




阅读全文
0 0
原创粉丝点击