c语言程序修改? 20

在文字处理软件或编译程序设计时,常常需要检查一个字符串或一个表达式中的括号是否相匹配?需要匹配括号包括大括号:[],和小括号:()。匹配思想:从左至右扫描一个字符串(或表... 在文字处理软件或编译程序设计时,常常需要检查一个字符串或一个表达式中的括号是否相匹配?需要匹配括号包括大括号:[ ],和小括号:( ) 。

匹配思想:从左至右扫描一个字符串(或表达式),则每个右括号将与最近遇到的那个左括号相匹配。则可以在从左至右扫描过程中把所遇到的左括号存放到堆栈中。每当遇到一个右括号时,就将它与栈顶的左括号(如果存在)相匹配,同时从栈顶删除该左括号。

算法思想:设置一个栈,当读到左括号时,左括号进栈。当读到右括号时,则从栈中弹出一个元素,与读到的左括号进行匹配,若匹配成功,继续读入;否则匹配失败,返回FLASE。

以下是算法的c语言实现,请改造该算法,支持花括号 { }

#define TRUE 0

#define FLASE -1

SqStack S ;

S=Init_Stack() ; /*堆栈初始化*/

int Match_Brackets( )

{ char ch , x ;

scanf(“%c” , &ch) ;

while (asc(ch)!=13)

{

if ((ch==‘(’)||(ch==‘[’)) push(S , ch) ;

else if (ch==‘]’)

{

x=pop(S) ;

if (x!=‘[’)

{

printf(“’[’括号不匹配”) ;

return FLASE ;

}

}

else if (ch==‘)’)

{

x=pop(S) ;

if (x!=‘(’)

{

printf(“’(’括号不匹配”) ;

return FLASE ;

}

}

}

if (S.top!=0)

{

printf(“括号数量不匹配!”) ;

return FLASE ;

}

else return TRUE ;

}
展开
 我来答
格里编程办公技巧
科技发烧友

2021-04-12 · 编程、办公知识分享与学习
格里编程办公技巧
采纳数:434 获赞数:879

向TA提问 私信TA
展开全部

首先说下存在的问题:

1.define容易造成误会,因为不符合一般的编程习惯,false 0, true 1;

2.scanf放在你的那个地方是达不到你想要的结果,只输入了一次。建议改成getchar这种形式,具体如图二;

3.为了达到通用化,建议定义两个你需要处理的字符组合,他们相互配对,这样方便以后添加而不用改下面的代码;

4.同时为了配合3这个更改添加一个判断输入字符是不是在字符组的函数,方便使用。

详细代码如图,因为没有Stack我没有办法验证,如果有错你看着改改,这种思路是没有错的。

图一

图二

辣叮沦b

2022-06-28 · 贡献了超过248个回答
知道答主
回答量:248
采纳率:0%
帮助的人:7.8万
展开全部
首先说下存在的问题:1.define容易造成误会,因为不符合一般的编程习惯,false 0, true 1;2.scanf放在你的那个地方是达不到你想要的结果,只输入了一次。建议改成getchar这种形式,具体如图二;3.为了达到通用化,建议定义...
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式