python括号配对检测问题_括号配对问题

#include

#define MAXSIZE 1000

#define OK 1

#define ERROR 0

#define TRUE 1

#define FALSE 0

typedef struct{//顺序栈的定义

char c[MAXSIZE];

int top;

}SeqStack;

void initStack(SeqStack *s);

int push(SeqStack *s, char c);

int pop(SeqStack *s, char *c);

int getTop(SeqStack *s, char *c);

int isTrue(char *temp, char c);

void outStack(SeqStack *s);

int main()

{

SeqStack s, *s1 = &s;

char str[MAXSIZE] = {"\0"};

scanf("%s", str);

initStack(s1);

for(int i = 0; str[i] != '\0'; i++)

{

//outStack(s1);

char b, *temp = &b;

char c = str[i];

switch(c)

{

case '(':

case '[':

case '{':

push(s1, c);//压进栈内

break;

case ')':

case ']':

case '}':

if(getTop(s1, temp) && isTrue(temp, c))pop(s1, temp);

else

{

printf("false\n");

return 0;

}

break;

}

}

if(s1->top != -1)

{

printf("false\n");

return 0;

}

else printf("true\n");

return 0;

}

//初始化顺序栈

void initStack(SeqStack *s)

{

s->top = -1;

}

//顺序进栈运算

int push(SeqStack *s, char c)

{

//将x置入s栈新栈顶

if(s->top == MAXSIZE - 1)

return FALSE;

s->top++;

s->c[s->top] = c;

return TRUE;

}

//顺序栈出栈运算

int pop(SeqStack *s, char *c)

{

//将栈S栈顶元素读出,放到x所指的存储空间中,栈顶指针保持不变

if(s->top < 0)

return FALSE;

*c = s->c[s->top];

s->top--;

return TRUE;

}

//将栈顶元素读出

int getTop(SeqStack *s, char *a)

{

if(s->top < 0)

return FALSE;

*a = s->c[s->top];

return TRUE;

}

//判断括号是否匹配

int isTrue(char *temp, char c)

{

switch(*temp)

{

case '(':

if(c == ')') return TRUE;

else return FALSE;

break;

case '[':

if(c == ']') return TRUE;

else return FALSE;

break;

case '{':

if(c == '}') return TRUE;

else return FALSE;

break;

default:

return FALSE;

break;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值