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

...出问题了啊,运行即崩溃,这是个栈实现括号匹配的程序

发布网友 发布时间:2024-09-28 09:11

我来回答

1个回答

热心网友 时间:2024-10-04 19:34

stack * s;中的指针没有分配内存,但是你却在函数中访问成员变量,所以错误。

int initstack(stack * s)
{
(*s).base=(elemtype *)malloc(MAX*sizeof(elemtype));// 这里为成员变量分配内存,此时s自己都没有分配内存。所以访问异常。

修改后:

#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#define MAX 20
typedef char elemtype;
typedef struct stack
{
elemtype *base;
elemtype *top;
int size;
}stack;
int initstack(stack * s)
{
(*s).base=(elemtype *)malloc(MAX*sizeof(elemtype));
if((*s).base=NULL)
return-1;
return 0;
(*s).top=(*s).base;
(*s).size=MAX;
}
int emptystack(stack *s)
{
if(s->base==s->top)
return 1;
return 0;
}
void pushstack(stack *s,elemtype *e)
{
if(s->top-s->base==MAX)

printf("栈已满");
*(++(s->top))=*e;
}
void pupstack(stack *s,elemtype *e)
{
if(s->top==s->base)
printf("栈为空");
*e=*(s->top);
s->top=s->top-1;
}
void checkstack( stack *s)
{
elemtype ch[50],*e,*a;
printf("请输入表达式:");
gets(ch);
a=ch;//
while(*a)
{
switch(*a)
{
case '(':
case '[':
case '{':
pushstack(s,a);
a++;
break;
case ')':
case ']':
case '}':
if(!emptystack(s))
{
pupstack(s,e);
if(*e=='('&&(*a)==')'||*e=='['&&(*a)==']'||*e=='{'&&(*a)=='}')
{

a++;
break;
}
else
{
printf("左右括号不匹配");
return;
}
}
else{
printf("缺乏左括号");
return;
}
default: a++;
}
}
if(emptystack(s))
printf("字符串匹配\n");
else
printf("字符串不匹配\n");
}
void main()
{
stack *s = (stack*)malloc(sizeof(stack));
initstack(s);
checkstack(s);
system("pause");
delete s;
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
3d坦克怎么刷水晶啊 谁能给我一个3d坦克的真号 跪求3d坦克的号,最好水晶多一点,要元帅,低一点也行,要真的啊。 谁能送我一个3D坦克真号和密码,我帮他买游戏光盘和电脑主机 3d坦克公开号 要真的,假的不给分 木制折叠椅怎么选?木制折叠椅价格了解一下 好看的电影2010有什么好看的电影? 丹阳市导墅镇盛泽镇多少里 丹阳离盛泽有多远 右边胸部上方疼痛是什么原因 刚学习栈,做了个左右括号匹配,但结果怎么都不正确,求教该怎么修改_百 ... 天城中学的校训、校风、教风和学风分别是什么? 天城安徽省天城中学 天城中学的电化教学设施达到何种标准? 天城中学何时创办的? ...奥特曼里二代美弗拉斯星人说的卑鄙也好,藠藠头也罢是什么意思啊? 电脑密码输错五次锁定了怎么办啊? 电脑输不了开机密码怎么办? 电脑密码打不开要用什么方法 电脑开机后输入密码不能进入桌面怎么办? 谁有制作玻璃碎片的AE视频教程啊,麻烦发给我一下,急着作业啊,谢谢! ...底面直径是3m,深是直径的三分之二,在池的内壁和下底面抹水泥... ...深5米。在水池的四周和底面抹上水泥,抹水泥部分的面积是多少平方米... ...1.在它的侧面和底部抹上水泥,抹水泥部分的面积是多少? ...底面半径4米,深3米,在池的周围和地面抹上水泥.抹水泥部分的... 完整的整套3D建模视频教程,可以发给我吗?水晶石的6GB,红色风暴的3.5GB... 泰山庙小学泰山庙小学教科研成果 麻辣粉条怎么调好吃又简单 广州宝茜化妆品招工吗 广州宝茜化妆品有限公司员工上班时间安排 python:栈的理解与应用 人工智能培训机构排名前十的有哪些 四月一日是中国的什么日子 人身险伤残等级评定标准及赔偿标准 人身险伤残等级评定标准 野生小核桃有什么营养价值? ...梦见自己去了一个左边是两个洞口,被猪屎猪尿挡住了,大水流不出来... 先科车载小冰箱为什么不间歇制冷? 先科冰箱质量如何,好不好? 银行卡掉了,怎么样才能知道它的卡号 桐城市哪里宵夜好吃 桐城有哪些美食街值得推荐? 学生会里的宅生活主要角色 学生会里的宅生活作品简介 学生会里的宅生活故事简介 学生会里的宅生活出版状况 英语理论有哪些 海参燕窝哪个好 昨晚梦到儿子整个人掉进大便池子了,头也忘里面去了,然后我们就把他弄... 处理器: E3 1231v3 散热:九州风神冰凌mini 主板:技嘉B85m-D3V 显示_百 ...