sizeof i是合法的C语言表达式,c语言四则表达式括号是否合法判定

#include

#include

#define OK 10000001

#define ERROR 10000002

struct note//定义栈结点

{

int data;

note* next;

};

typedef struct note Note;//给栈节点换个名字

struct stack//定义栈头节点

{

int count;

note* top;

};

typedef struct stack Stack;//给栈换个名字

int InitStack(Stack *s)//初始化栈

{

s->top = NULL;

s->count = 0;

return OK;

}

int push(Stack *s, int t)//入栈

{

Note *p = (Note*)malloc(sizeof(Note));

if (p == NULL)

{

return ERROR;

}

p->data = t;

p->next = s->top;

s->top = p;

s->count++;

return OK;

}

int GetTop(Stack *s)//返回栈顶元素

{

if (s->count == 0)

return ERROR;

return s->top->data;

}

int pop(Stack *s)//出栈

{

if (s->count == 0)

return ERROR;

int e;

Note *p = s->top;

e = p->data;

s->top = p->next;

free(p);

s->count--;

return e;

}

int judge(int e,Stack *s)//判断括号

{

char tmp;

if (e == 1)

tmp = '(';

else if (e == 2)

tmp = '[';

else if (e == 3)

tmp = '{';

if (tmp == GetTop(s))

{

pop(s);

return OK;

}

else return ERROR;

}

int main()

{

char str[102];

Stack sign;

InitStack(&sign);

scanf("%s", str);

int flag=OK;//标志符

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

{

if (str[i] == '{' || str[i] == '[' || str[i] == '(')//是左括号,入栈

push(&sign, str[i]);

else

{

switch (str[i])//是右括号,检查,出栈

{

case ')': flag = judge(1, &sign); break;

case ']': flag = judge(2, &sign); break;

case '}': flag = judge(3, &sign); break;

default:

break;

}

}

if (flag == ERROR)

{

printf("NO");

break;

}

}

if (flag == OK)

printf("YES");

return 0;

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值