问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

括号匹配问题

发布网友 发布时间:2022-05-08 03:51

我来回答

2个回答

热心网友 时间:2023-11-25 05:22

#include<stdio.h>
#define MAX 100
int match(char *str)
{
char stack[MAX],*p=stack;
while(*str)
{
switch(*str)
{
case '(':
{
*p++=*str;
break;
}
case ')':
{
if(*--p!='(')
return 0;
break;
}
case '[':
{
*p++=*str;
break;
}
case ']':
{
if(*--p!='[')
return 0;
break;
}
case '{':
{
*p++=*str;
break;
}
case '}':
{
if(*--p!='{')
return 0;
break;
}
}
str++;
}
if(stack==p)
return 1;
else
return 0;
}

int main()
{
char str[MAX];
gets(str);
if(match(str))
{
printf("match\n");
}
else
{
printf("not match\n");
}
return 0;
}

热心网友 时间:2023-11-25 05:22

#include<stdio.h>
#include<malloc.h>
#include<windows.h>
struct Stack{char ch;struct Stack *next;};
#define LEN sizeof(struct Stack)
int n;char x;

struct Stack *creat()
{struct Stack *S;S=0;return S;}

struct Stack * Push(struct Stack *S,char c)
{struct Stack *p;
p=(struct Stack *)malloc(LEN);
p->ch=c;p->next=S;S=p;return S;
}

struct Stack * Pop(struct Stack *S,char c)
{ struct Stack *p;
if(S==0)printf("error!\n");
else p=S;S=S->next;delete p;return S;}

char Gettop(struct Stack *S)
{char c;if(S==0)c='?';else c=S->ch;return c;}

void Match(struct Stack *S)
{int flag=1;
char c;
printf("如下方式输入括号\n");printf("[](){}#\n");printf("请使用英文的半角符,符号#表示结束输入,最后按enter键进行判断\n");
printf("请先按shift键,后按括号\n");
scanf(" %c",&c);if(c=='#')printf("没有输入括号,请退出后重新输入括号\n");
else{ while(c!='#'){
switch(c)
{case '(':if(flag==0)flag=0;else {S=Push(S,c);flag=1;}break;
case '[':if(flag==0)flag=0;else {S=Push(S,c);flag=1;}break;
case '{':if(flag==0)flag=0;else {S=Push(S,c);flag=1;}break;
case ')':x=Gettop(S);if(x=='('){S=Pop(S,x);flag=1;}else flag=0;break;
case ']':x=Gettop(S);if(x=='['){S=Pop(S,x);flag=1;}else flag=0;break;
case '}':x=Gettop(S);if(x=='{'){S=Pop(S,x);flag=1;}else flag=0;break;
default:printf("所输入非英文半角括号,请重新输入正确格式的括号:如[、]、(、)、{、}\n");
}
scanf(" %c",&c);}printf("经判断:\n");
if(S==0&&flag==1)printf("匹配正确\n");else printf("匹配错误\n");};}

void main()
{struct Stack *S;int i;
do{
S=creat();
Match(S);
printf("\n如需再对括号进行判断,请按1,否则按0结束\n");
scanf(" %d",&i);system("cls");}while(i==1);
}
作者:zhengweiqing

热心网友 时间:2023-11-25 05:22

#include<stdio.h>
#define MAX 100
int match(char *str)
{
char stack[MAX],*p=stack;
while(*str)
{
switch(*str)
{
case '(':
{
*p++=*str;
break;
}
case ')':
{
if(*--p!='(')
return 0;
break;
}
case '[':
{
*p++=*str;
break;
}
case ']':
{
if(*--p!='[')
return 0;
break;
}
case '{':
{
*p++=*str;
break;
}
case '}':
{
if(*--p!='{')
return 0;
break;
}
}
str++;
}
if(stack==p)
return 1;
else
return 0;
}

int main()
{
char str[MAX];
gets(str);
if(match(str))
{
printf("match\n");
}
else
{
printf("not match\n");
}
return 0;
}

热心网友 时间:2023-11-25 05:23

#include<stdio.h>
#include<malloc.h>
#include<windows.h>
struct Stack{char ch;struct Stack *next;};
#define LEN sizeof(struct Stack)
int n;char x;

struct Stack *creat()
{struct Stack *S;S=0;return S;}

struct Stack * Push(struct Stack *S,char c)
{struct Stack *p;
p=(struct Stack *)malloc(LEN);
p->ch=c;p->next=S;S=p;return S;
}

struct Stack * Pop(struct Stack *S,char c)
{ struct Stack *p;
if(S==0)printf("error!\n");
else p=S;S=S->next;delete p;return S;}

char Gettop(struct Stack *S)
{char c;if(S==0)c='?';else c=S->ch;return c;}

void Match(struct Stack *S)
{int flag=1;
char c;
printf("如下方式输入括号\n");printf("[](){}#\n");printf("请使用英文的半角符,符号#表示结束输入,最后按enter键进行判断\n");
printf("请先按shift键,后按括号\n");
scanf(" %c",&c);if(c=='#')printf("没有输入括号,请退出后重新输入括号\n");
else{ while(c!='#'){
switch(c)
{case '(':if(flag==0)flag=0;else {S=Push(S,c);flag=1;}break;
case '[':if(flag==0)flag=0;else {S=Push(S,c);flag=1;}break;
case '{':if(flag==0)flag=0;else {S=Push(S,c);flag=1;}break;
case ')':x=Gettop(S);if(x=='('){S=Pop(S,x);flag=1;}else flag=0;break;
case ']':x=Gettop(S);if(x=='['){S=Pop(S,x);flag=1;}else flag=0;break;
case '}':x=Gettop(S);if(x=='{'){S=Pop(S,x);flag=1;}else flag=0;break;
default:printf("所输入非英文半角括号,请重新输入正确格式的括号:如[、]、(、)、{、}\n");
}
scanf(" %c",&c);}printf("经判断:\n");
if(S==0&&flag==1)printf("匹配正确\n");else printf("匹配错误\n");};}

void main()
{struct Stack *S;int i;
do{
S=creat();
Match(S);
printf("\n如需再对括号进行判断,请按1,否则按0结束\n");
scanf(" %d",&i);system("cls");}while(i==1);
}
作者:zhengweiqing
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
人教版小学英语课本哪里能下载到MP3 小学英语同步听力音频去哪里找 去陆丰旅行,要提前做好什么准备? 请教高手:苹果6s能不能安装两个微信?谢谢指点! 对于一个在女性内衣店工作的男性,你们怎么看待 ...湖是世界最深和蓄水量最大的咸水湖 B.死海是世界最低点 C.马来群 ... ...世界最大的湖泊___世界上人口最多的国家___世界上面积最大... 世界最深和蓄水量最大的湖是什么?世界最低点是哪?世界面积最大的高原... 尚赫净水器滤芯 如何清洗尚赫 括号匹配 如何为button的属性onclick传参 求VBA代码改变按钮属性 请问“CommandButton1_Click”这个是按钮的哪个属性? 请教Button的属性 CausesValidation vc编程中动态设置button按钮的属性 excel选项按钮属性问题? 使一个按钮具有开关二项功能,用basic语言如何实现? excel2016 VB按钮属性设置 以前微信绑定银行卡,以前的不用了,请问怎么才能解除绑定? 如何取消绑定银行卡 求创意设计品牌名称,悬赏无上限! 被永久封了。绑定的银行卡怎样解绑? 银行卡绑定在另外一个上怎么解除? 上绑定的银行卡不用了如何解绑? 国考公务员2021年报名时间 2021年国考报名时间和考试时间 2015年黑龙江高考什么时候出成绩 高考成绩查询黑龙江省 黑龙江高考成绩怎么查询系统 括号匹配 用数据结构写 求代码 数据结构:括号匹配问题。 括号匹配(c++) 括号的匹配问题(C语言) c语言的括号匹配问题 如何用c语言实现括号匹配的问题? 括号匹配 基本算法 括号匹配和检查程序 c++括号匹配检验 数据结构(C)实现括号匹配程序的问题 栈的应用 括号匹配 C语言 括号是否匹配。 怎么调用括号匹配函数, 别人拿了我的工程居间费但是工程没做成,钱退给我了,算诈骗吗? 工程居间费一般怎么付 我天生就黑那能变白吗 不小心在网易云音乐点了今后不再推荐,结果取消不了 没有推荐的视频 无底深渊的环境与特性 无底深渊的简介 狄摩高根的仆人