C语言用栈写一个判断输入的表达式的括号是否正确的算法?表达式中包含两种括号,圆括号和方括号.会的朋友帮忙写下.二楼的哥们,栈是老师要求的,原来根本没学过如何实用栈

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/05 23:41:54
C语言用栈写一个判断输入的表达式的括号是否正确的算法?表达式中包含两种括号,圆括号和方括号.会的朋友帮忙写下.二楼的哥们,栈是老师要求的,原来根本没学过如何实用栈

C语言用栈写一个判断输入的表达式的括号是否正确的算法?表达式中包含两种括号,圆括号和方括号.会的朋友帮忙写下.二楼的哥们,栈是老师要求的,原来根本没学过如何实用栈
C语言用栈写一个判断输入的表达式的括号是否正确的算法?
表达式中包含两种括号,圆括号和方括号.会的朋友帮忙写下.
二楼的哥们,栈是老师要求的,原来根本没学过如何实用栈

C语言用栈写一个判断输入的表达式的括号是否正确的算法?表达式中包含两种括号,圆括号和方括号.会的朋友帮忙写下.二楼的哥们,栈是老师要求的,原来根本没学过如何实用栈
//---------------------------------------------------------------------------
#include
#include
#define MEM_ERR "malloc() error!"
#define EMPTY_ERR "stack is empty!"
typedef struct node{
char oper;
struct node *next;
}node;
typedef struct{
node *head;
unsigned int size;
}stack;
void error_exit(const char *msg)
{
fprintf(stderr,"%s\n",msg);
exit(-1);
}
int isempty(stack *stk)
{
return stk->size?0:1;
}
stack *init(void)
{
stack *rt=(stack*)malloc(sizeof(stack));
if (rt==NULL) error_exit(MEM_ERR);
rt->head=NULL;
rt->size=0;
return rt;
}
void push(stack *stk,char op)
{
node *tp=(node*)malloc(sizeof(node));
if (tp==NULL) error_exit(MEM_ERR);
tp->oper=op;
tp->next=stk->head;
stk->head=tp;
++stk->size;
}
char pop(stack *stk)
{
char op;
node *tmp;
if (isempty(stk)) {
error_exit(EMPTY_ERR);
}
op=stk->head->oper;
tmp=stk->head;
stk->head=tmp->next;
--stk->size;
free(tmp);
return op;
}
char top(stack *stk)
{
if (isempty(stk)) {
error_exit(EMPTY_ERR);
}
return stk->head->oper;
}
void del_stk(stack *stk)
{
node *t;
while (stk->head)
{
t=stk->head;
stk->head=t->next;
free(t);
}
free(stk);
}
int islr(const char a)
{
return a=='('||a=='['||a=='{';
}
int isrr(const char a)
{
return a==')'||a==']'||a=='}';
}
int match(const char a,const char b)
{
int t;
switch (a) {
case '(':t=b==')';break;
case '[':t=b==']';break;
case '{':t=b=='}';break;
}
return t;
}
int main(int argc,char* argv[])
{
char a;
stack *stk=init();
while ((a=getchar())!='\n')
{
if (islr(a)) {
push(stk,a);
}
else if (isrr(a)) {
if (!isempty(stk)&&match(top(stk),a)) pop(stk);
else break;
}
}
if (!isempty(stk)) {
printf("Unmatched!\n");
del_stk(stk);
}
else printf("Matched!\n");
return 0;
}
//---------------------------------------------------------------------------

试用C语言设计一个程序,程序的功能是接收任意输入一个算术表达式,判断表达式中的括号是否配对出现.功能要求及说明:(1) 任意输入一个算术表达式;(2) 利用栈,判断表达式中出现的 C语言用栈写一个判断输入的表达式的括号是否正确的算法?表达式中包含两种括号,圆括号和方括号.会的朋友帮忙写下.二楼的哥们,栈是老师要求的,原来根本没学过如何实用栈 JAVA语言计算表达式的结果用java语言编写一个程序,输入表达式,结算表达式的结果,其中表达式中有括号 给出一行C语言表达式,判断给定的整数是否是一个2的幂 完成一个 C算法,输入一算术表达式能够编程计算其中括号 “(”和“)”;“[”和“]”;“{”和“}”的匹配第2步在判断表达式括号匹配正确的基础上能够计算表达式的值. C语言 给定的表达式中左右括号数量是否匹配C语言编程 判断给定的表达式中左右括号数量是否匹配 任意输入一个数,:表达式,判断是奇数还是偶数.如下:请输入一个数:53 您输入的53是奇数这是一道c语言的编程题. 编写一个C语言程序实现判断任意输入的一个整数是几位数,并求每位的和. 输入一行表达式,判断该表达式中的括号是否匹配.括号要求符合C++表达式的要求.若左括号与右括号匹配,则 C语言 用if判断用户输入的数字是几位数判断到九位数 能正确判断字符变量c是大写字母的C语言表达式是( ).A) 'A' C语言:if后面的表达式必须加括号吗? c语言,逗号表达式要带括号吗?为什么书上的逗号表达式都带括号? 在C语言的表达式中,用作判断的表达式的是什么表达式?为什么 设计一个程序:输入一个整数,判断它的奇偶性.请用c语言 用C语言编程实现一个简单的四则运算计算器编程:编程实现一个简单的四则运算计算器:从键盘输入一个四则运算表达式(没有空格和括号),遇等号=说明输入结束,输出结果.假设计算器只能 从键盘输入一个表达式,判断它是否符合下面的语法规则 的c语言程序(1) 表达式中只允许使用以下符号: 大写字母,+,-,*,/,(,)(2) 用单个大写字母表示进行运算的数据;(3) 允许使用括号嵌套, c语言中判断一个输入的数为偶数还是奇数的程序怎么编写