软件小白; 2022-04-09 15:22 采纳率: 0%
浏览 30

数据结构的括号匹配问题

为什么一直显示s没有初始化。
#include<stdio.h>
#include<stdlib.h>
#define Stack_Init_Size 100
#define StackInCrement 10
#define OK 1
#define OVERFLOW -2
#define ERROR 0
typedef char SElemType;
typedef int status;
typedef struct
{
SElemType *base;
SElemType *top;
int stacksize;
}SqStack;

status InitStack(SqStack s){//建立栈
s.base=(SElemType *)malloc(sizeof(SElemType)*Stack_Init_Size);
if(!s.base) exit(OVERFLOW);
s.top=s.top;
s.stacksize=Stack_Init_Size;
return OK;
}

status Push(SqStack s,SElemType e){//元素进栈
if(s.top-s.base>=s.stacksize){
s.base=(SElemType *)realloc(s.base,(Stack_Init_Size+s.stacksize)*sizeof(SElemType));
if(!s.base) exit(OVERFLOW);
s.top=s.base+s.stacksize;
s.stacksize=Stack_Init_Size+s.stacksize;
}
*s.top++=e;
return OK;
}

status Pop(SqStack s){//出栈
SElemType e;
if(s.top==s.base) return ERROR;
e=*--s.top;
return OK;
}

void April(SqStack s){//判断括号问题
char c;
printf("请输入字符串:");
while((c=getchar())!='\n'){
if(c=='{'||c=='['||c=='(') Push(s,c);
else if(c=='}'){
if((s.top-1)=='{') Pop(s);
else{
printf("Match False!");
exit(0);
}
}
else if(c==']'){
if(
(s.top-1)=='[') Pop(s);
else{
printf("Match False!");
exit(0);
}
}
else if(c==')'){
if(*(s.top-1)=='(') Pop(s);
else{
printf("Match False!");
exit(0);
}
}
}
if(s.base==s.top) printf("Match succed!");
else printf("Match succeed!");
}
int main(){
SqStack s;
InitStack(s);
April(s);
return 0;
}

  • 写回答

1条回答 默认 最新

  • 慕雪华年 C/C++领域新星创作者 2022-04-09 18:56
    关注

    请用代码块粘贴代码,不然会丢掉缩进
    问题1

    img

    问题2
    你这里传的是S的参数,在函数里面是形参,形参的一切操作都不会更改main中的实参,所以对main里面的s并没有进行任何初始化操作,报错s未初始化

    img


    解决方法是传s的地址过去&S,对应的函数也需要更改

    img

    弱弱的说一句,你这里面出现了非常多不同数据类型相加的错误,char*=char*+int都出现了,真的没法改

    这道题我的博客里面有,你可以参考一下👉https://blog.csdn.net/muxuen/article/details/123760510

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 4月9日

悬赏问题

  • ¥15 惠普360g9的最新bios
  • ¥15 配置hadoop时start-all.sh老是启动失败
  • ¥30 这个功能用什么软件发合适?
  • ¥60 微信小程序,取消订单,偶尔订单没有改变状态
  • ¥15 用pytorch实现PPO算法
  • ¥15 关于调制信号的星座图?
  • ¥30 前端传参时,后端接收不到参数
  • ¥15 这是有什么问题吗,我检查许可证了但是显示有呢
  • ¥15 机器学习预测遇到的目标函数问题
  • ¥15 Fluent,液体进入旋转区域体积分数不连续