永发信息网

求高手用栈的操作实现”括号匹配检验“这个程序,用数据结构的知识.谢谢啦!

答案:1  悬赏:80  手机版
解决时间 2021-05-21 06:46
求高手用栈的操作实现”括号匹配检验“这个程序,用数据结构的知识.谢谢啦!
最佳答案

这是其中括号匹配的函数部分:
void match(SeqStack S,char *str)//括号的比较
{
\x05int i;
\x05char ch;
\x05for(i = 0; str[i] != '\0'; i++)
\x05{
\x05\x05switch(str[i])
\x05\x05{
\x05\x05case '(':
\x05\x05case '[':
\x05\x05case '{':
\x05\x05\x05Push(&S,str[i]);
\x05\x05\x05break;
\x05\x05case ')':
\x05\x05case ']':
\x05\x05case '}':
\x05\x05\x05if(GetTop(&S)=='#')
\x05\x05\x05{
\x05\x05\x05\x05printf(\n -_-!右括号多余!\n);
\x05\x05\x05\x05exit (0);
\x05\x05\x05}
\x05\x05\x05else
\x05\x05\x05{
\x05\x05\x05\x05ch=GetTop(&S);
\x05\x05\x05\x05if(Compare(ch,str[i]))
\x05\x05\x05\x05\x05Pop(&S);
\x05\x05\x05\x05else
\x05\x05\x05\x05{
\x05\x05\x05\x05\x05printf(\n -_-!对应的左右括号不同类!\n);
\x05\x05\x05\x05\x05exit (0);
\x05\x05\x05\x05}
\x05\x05\x05}
\x05\x05}
\x05}
\x05if(GetTop(&S)=='#')
\x05\x05printf(\n 括号匹配!^_^\n);
\x05else
\x05{
\x05\x05printf(\n -_-!左括号多余!\n);
\x05\x05exit (0);
\x05}
}
再问: 谢谢啦,我更想要全部的,尤其是GetTop(S,&e),Push(&s,e),Pop(&s,&e)这些部分的实现。
再答: #include #define Size 200 int exit(); typedef struct node//栈的定义 { char ch[Size]; int top; }SeqStack; void InitStack(SeqStack *S) //构造一个空栈 { S->top = -1; } void Push(SeqStack *S,char x)//进栈操作 { S->top++; S->ch[S->top] = x; } char Pop(SeqStack *S) //出栈操作 { char ch; ch = S->ch[S->top]; S->top--; return(ch); } char GetTop(SeqStack *S)//取栈顶元素 { char x; if(S->top == -1) x = '#'; else x = S->ch[S->top]; return x; } int Match(char ch) //字符优先级基准 { switch (ch) { case '{': case '}': return 4; case '[': case ']': return 5; case '(': case ')': return 6; default: return 0; } } int Compare(char t,char ch) //字符优先级比较 { int i,j,x; i=Match(t); j=Match(ch); if(i==j) x=1; else x=0; return x; } void kuohaomatch(SeqStack S,char *str)//括号的比较 { int i; char ch; for(i = 0; str[i] != '\0'; i++) { switch(str[i]) { case '(': case '[': case '{': Push(&S,str[i]); break; case ')': case ']': case '}': if(GetTop(&S)=='#') { printf(\n -_-!!! 右括号多余!\n); exit (0); } else { ch=GetTop(&S); if(Compare(ch,str[i])) Pop(&S); else { printf(\n -_-!!! 对应的左右括号不同类!\n); exit (0); } } } } if(GetTop(&S)=='#') printf(\n ^_^ 括号匹配! ^_^\n); else { printf(\n -_-!!! 左括号多余!\n); exit (0); } } void main() { SeqStack s; char ch[Size]; InitStack(&s); printf(请输入:\n); scanf(%s,ch); kuohaomatch(s,ch);//括号匹配 }
再问: 呵呵呵··谢谢啦。


我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
a o e i u v b p m f d t n l g k h j q x zh
潮湿的用英文怎么说,上海的空气潮湿、要经常
“品牌”真正定义和理念是什么?
网络借贷需要什么资料,网络借贷有哪些好处?
一个双耳旁,一个方,念什么.这个字“邡”的读
客厅地毯什么牌子好,客厅的地毯干什么用
用英语写一篇关于服装业务联系介绍信的作文,1
毕淑敏有关奉献的诗歌,关于庆元旦迎新年的诗
父母的寄语怎么写,家长写给初中生二十年后寄
C语言输入函数是怎么计算的 就是用sanf %a%b%
手上长猴子怎么去掉,手上长刺猴怎么才能去掉
翻译中文求大神Who is passing who lives who
描写黄浦江夜景的诗句,关于夜游黄浦江的作文
南宁至防城港多少公里,南宁到防城港有多远?
关于树的诗句古诗词,描写树和花的古诗,古诗
推荐资讯
求这个符号怎么打出来 如下图
有你在我身后诗句,并不是你每一次的华丽转身
税款滞纳金是什么意思,捷信高额利息,和滞纳
暧昧有关的诗词,五月的古诗词
藕丝是什么,藕断丝连中的丝属于______组织
语文中的表达方式,表现手法,表达技巧有何区别
打篮球时脚扭了。很肿。多少时间可以好?
英语翻译求把这句The only people you need i
反开头的的成语有哪些,边字开头的成语接龙
slam doors 怎么翻译
法治的生命线是什么,“执行力”够不够,决定
新县信阳正宗纯粮酒坊哪位知道具体地址啊
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?