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

数据结构之括号匹配(C++,链栈方式实现)

发布网友 发布时间:2022-05-11 22:39

我来回答

1个回答

热心网友 时间:2023-10-23 11:18

数据结构实验报告 括号匹配
#include <stdio.h>
#include <malloc.h>
#define OK 1
#define ERROR 0

//定义顺序堆栈
#define STACK_SIZE 100 //存储空间初始分配量
#define STACK_INC 10 //存储空间分配增量
typedef char Elem;
typedef struct{
Elem *base; //栈底指针
Elem *top; //栈顶指针
int size; //当前已分配的存储空间
}SqStack;

typedef int Status;

//创建空堆栈,栈顶指针和栈底指针相等时,栈为空
Status CreatStack(SqStack &S){
S.base=(Elem *)malloc(STACK_SIZE*sizeof(Elem));
S.top=S.base;
S.size=STACK_SIZE;
return OK;
}

//堆栈是否为空
Status StackEmpty(SqStack S){
if(S.top!=S.base) return ERROR;
return OK;
}

//进栈
Status Push(SqStack &S,Elem e){
if(S.top-S.base>=S.size){ //栈满,追加存储空间
S.base=(Elem *)realloc(S.base,(S.size+STACK_INC)*sizeof(Elem));
S.top=S.base+S.size;
S.size+=STACK_INC;
}
*S.top=e;
S.top+=1;
return OK;
}

//出栈
Status Pop(SqStack &S,Elem &e){
if(S.top==S.base) return ERROR;
S.top-=1;
e=*S.top;
return OK;
}

//括号匹配
Status Bracket(SqStack &S,char *str){
int i=0,flag1=0,flag2;
Elem e;
while(str[i]!='\0'){
switch(str[i]){
case '(':Push(S,'(');break; //'('进栈
case '[':Push(S,'[');break; //'['进栈
case ')':{Pop(S,e);
if(e!='(') flag1=1; break;} //出栈,判断是否为'('
case ']':{Pop(S,e);
if(e!='[') flag1=1;break;} //出栈,判断是否为'['
default: break;
}
if(flag1) break; //出现不匹配,立即结束循环
i++;
}
flag2=StackEmpty(S); //flag2判断堆栈是否为空
if(!flag1 && flag2) printf("括号匹配!\n");
else printf("括号不匹配!\n");
return OK;
}

//主函数
void main()
{
char temp,flag='y';
while(flag=='y'){
char str[255];
SqStack S;
printf("请输入字符串:");
scanf("%s",str);
scanf("%c",&temp); //接受输入的回车键
CreatStack(S);
Bracket(S,str);
printf("你想再试一次吗(按y继续): ");
scanf("%c",&flag);
printf("\n");
}
printf("程序结束.\n");
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
你能用一句话表达这个画面吗 专科学高铁乘务专业能找到工作吗 广西理工职业技术学院怎样啊?? 月亮星座怎么配对,月亮星座配对查询爱情 广西理工职业技术学院到底好不好的 最甜蜜的月亮星座组合,最冷血的月亮星座 包子怎么做才松软 包子如何做才松软 包子店的包子发酵怎么这么松软 专做俄罗斯业务的货代公司 大理石地板怎么拖干净又亮妙招 推荐一个下载正版音乐的网站 下正版音乐的网站 推荐正版音乐网站 找一个下正版歌的网站 哪个网站是正版音乐库 急求!我的狗狗吐白沫没精神不吃东西怎么办 狗狗吐了食物后又开始吐白色泡沫粘液,怎么办啊!!!怎么办?着急着急_百度问一问 家里狗狗口吐白色透明粘液,没精神,不进食,甚至都趴在地上起不来。 Foxmail 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连... foxmail无法登陆到收信服务器是什么意思 foxmail无法登陆 手动设置又是什么东西 为什么我微信更新了,不是以前那个了,还要重新登陆? 就是晚上睡觉的时候有种想吐的感觉,醒了还有口水,把口水吐了之后,还恶心,感觉胃胀,会打嗝,但不是连 oppo R9sk怎么找不到桌面小部件? 我想要超级演说家20140628期刘媛媛的演讲稿 女人白带过多是什么原因?怎么治疗? 女性白带过多有哪些食疗方法? 女人白带增多怎么办? 《超级演说家》的经典台词有哪些? 重庆的参加今年超级演说家决赛演讲稿可以写哪些内容? 数据结构括号配对问题,本人在线等 急!!!数据结构,括号匹配问题 数据结构的实验题,要求用栈匹配小括号 数据结构括号匹配的算法问题 数据结构 VC++6.0环境 判断 括号 匹配问题 数据结构(C)实现括号匹配出现的问题 C语言括号配对问题,还没学数据结构,根据自己的思路做的,(检测离最近的括号,把它们去掉,直至剩余 数据结构括号匹配的思想 数据结构括号匹配题求改错。 数据结构括号匹配问题 求解。 数据结构 括号匹配的检验 C++ 数据结构(C++版)栈与队的的应用(括号匹配问题),要求在下面的问题补充。急求源代码啊,用类定义的。 数据结构用栈实现括号匹配,有个错误,只输入单独右括号,无左括号与他匹配,仍然输出是对的,为什么?? 数据结构 括号匹配算法 C++数据结构括号匹配问题怎么运行不了呢 数据结构习题括号匹配,总是在 switch 语句的第4、5、6个case 语句中出现以下错误 犀牛软件和3Dmax的具体区别,和分别得优点。 3Ds max和犀牛在建模上有什么区别? 犀牛软件和3D软件的区别与共性是什么? 犀牛跟3dmax有神马不同