江丽奈^_^ 2021-12-06 22:08 采纳率: 100%
浏览 37
已结题

括号匹配问题,没有输出结果

代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct SqStack
{
char data;
struct SqStack* next;
};

SqStack* InitStack(SqStack* &S)
{
S=(SqStack*)malloc(sizeof(SqStack));
S->data=0;
S->next=NULL;
return S;
}

int Push(SqStack* S,char e)
{
SqStack p;
p=(SqStack
)malloc(sizeof(SqStack));
p->data=e;
p->next=S->next;
S->next=p;
return 1;
}

int Pop(SqStack* S,char &e)
{
SqStack *p;
if(S->next==NULL)
return 0;
else
{
p=S->next;
e=p->data;
S->next=p->next;
free(p);
return 1;
}
}

int GetTop(SqStack* S,char &e)
{
if(S->next==NULL)
return 0;
e=S->next->data;
return 1;
}

int Match(char a,char b)
{
if(a+1==b||a+2==b)//左右括号ASCII码相差1或2
return 1;
return 0;
}

int Check(SqStack* S,char *str)
{
int i=0;
char e;
while(str[i])
{
switch(str[i])
{
case'(':
case'[':
case'{':
Push(S,str[i]);
break;
case')':
case']':
case'}':
if(S->next==NULL)
{
printf("no!");
}
else
{
GetTop(S,e);
if(Match(e,str[i]))
Pop(S,e);
}
break;
default:
break;
}
i++;
}
if(S->next==NULL)
printf("yes!");
else
printf("no!");
}

int main()
{
SqStack* S;
char str[100];
printf("input:");
scanf("%s",str);
Check(S,str);
}
没有输出结果

img

  • 写回答

2条回答 默认 最新

  • CSDN专家-link 2021-12-07 02:54
    关注

    S你都没初始化啊

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 12月7日
  • 已采纳回答 12月7日
  • 创建了问题 12月6日

悬赏问题

  • ¥15 ansys fluent计算闪退
  • ¥15 有关wireshark抓包的问题
  • ¥15 需要写计算过程,不要写代码,求解答,数据都在图上
  • ¥15 向数据表用newid方式插入GUID问题
  • ¥15 multisim电路设计
  • ¥20 用keil,写代码解决两个问题,用库函数
  • ¥50 ID中开关量采样信号通道、以及程序流程的设计
  • ¥15 U-Mamba/nnunetv2固定随机数种子
  • ¥15 vba使用jmail发送邮件正文里面怎么加图片
  • ¥15 vb6.0如何向数据库中添加自动生成的字段数据。