c++括号匹配检验利用栈编写满足下列要求的括号匹配检验程序:假设表达式中允许包含两种括号:圆括号和方括号,其嵌套的顺序随意,即([]())或[([][])]等为正确的格式,[(]或([())或(()])均为不正

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/01 02:19:05

c++括号匹配检验利用栈编写满足下列要求的括号匹配检验程序:假设表达式中允许包含两种括号:圆括号和方括号,其嵌套的顺序随意,即([]())或[([][])]等为正确的格式,[(]或([())或(()])均为不正
c++括号匹配检验
利用栈编写满足下列要求的括号匹配检验程序:假设表达式中允许包含两种括号:圆括号和方括号,其嵌套的顺序随意,即([]())或[([][])]等为正确的格式,[(]或([())或(()])均为不正确的格式.输入一个包含上述括号的表达式,检验括号是否配对.

c++括号匹配检验利用栈编写满足下列要求的括号匹配检验程序:假设表达式中允许包含两种括号:圆括号和方括号,其嵌套的顺序随意,即([]())或[([][])]等为正确的格式,[(]或([())或(()])均为不正
这是以前做的科学计算的栈以及功能函数,支持小数、多位数、加减乘除、括号运算,会自动判断表达式正误,希望对你有所帮助,当然也包括了括号匹配功能.其实括号匹配功能关键就在于左右大括号小括号的位置以及数量判断.根据实例分析一下很快就能写好算法.
//在In(c)里判断括号是否匹配
//栈及其功能声明部分
//SqStack_theta 为运算符栈
//SqStack_value 为数据栈
//_theta 为运算符栈功能函数标识
//_value 为数据栈功能函数标识
#define STACK_INIT_SIZE 100
#define STACKINCERMENT 5
#define ERROR 0
#define OK 1
#define OVERFLOW -2
#include"stdio.h"
#include"malloc.h"
#include"stdlib.h"
typedef char SElemTypeOPTR;
typedef double SElemTypeOPND;
typedef int Status;
typedef struct
{
\x09SElemTypeOPTR *base;
\x09SElemTypeOPTR *top;
\x09int stacksize;
}SqStack_theta;
Status InitStack_theta(SqStack_theta &s)
{
\x09s.base=(SElemTypeOPTR*)malloc(STACK_INIT_SIZE*sizeof(SElemTypeOPTR));
\x09if(!s.base)exit(OVERFLOW);
\x09s.top=s.base;
\x09s.stacksize=STACK_INIT_SIZE;
\x09return OK;
}
Status Push_theta(SqStack_theta &s,SElemTypeOPTR e)
{
\x09if(s.top-s.base>=s.stacksize)
\x09{
\x09\x09s.base=(SElemTypeOPTR*)realloc(s.base,(s.stacksize+STACKINCERMENT)*sizeof(SElemTypeOPTR));
\x09\x09if(!s.base)exit(OVERFLOW);
\x09\x09s.top=s.base+s.stacksize;
\x09\x09s.stacksize+=STACKINCERMENT;
\x09};
\x09*s.top++=e;
\x09return OK;
}
Status Pop_theta(SqStack_theta &s,SElemTypeOPTR &e)
{
\x09if(s.top==s.base) return OVERFLOW;
\x09e=*--s.top;
\x09return OK;
}
Status SEmpty_theta(SqStack_theta &s)
{
\x09if(s.base==s.top)return OK;
\x09else return ERROR;
}
Status GetTop_theta(SqStack_theta &s)
{
\x09if(s.top==s.base) return OVERFLOW;
\x09return *(s.top-1);
}
//
// OPND stack
//
typedef struct
{
\x09SElemTypeOPND *base;
\x09SElemTypeOPND *top;
\x09int stacksize;
}SqStack_value;
Status InitStack_value(SqStack_value &s)
{
\x09s.base=(SElemTypeOPND*)malloc(STACK_INIT_SIZE*sizeof(SElemTypeOPND));
\x09if(!s.base)exit(OVERFLOW);
\x09s.top=s.base;
\x09s.stacksize=STACK_INIT_SIZE;
\x09return OK;
}
Status Push_value(SqStack_value &s,SElemTypeOPND e)
{
\x09if(s.top-s.base>=s.stacksize)
\x09{
\x09\x09s.base=(SElemTypeOPND*)realloc(s.base,(s.stacksize+STACKINCERMENT)*sizeof(SElemTypeOPND));
\x09\x09if(!s.base)exit(OVERFLOW);
\x09\x09s.top=s.base+s.stacksize;
\x09\x09s.stacksize+=STACKINCERMENT;
\x09};
\x09*s.top++=e;
\x09return OK;
}
Status Pop_value(SqStack_value &s,SElemTypeOPND &e)
{
\x09if(s.top==s.base) return OVERFLOW;
\x09e=*--s.top;
\x09return OK;
}
SElemTypeOPND GetTop_value(SqStack_value &s)
{
\x09if(s.top==s.base) return OVERFLOW;
\x09return *(s.top-1);
}
//判断优先级 返回int型
//1 >
//0 =
//-1

c++括号匹配检验利用栈编写满足下列要求的括号匹配检验程序:假设表达式中允许包含两种括号:圆括号和方括号,其嵌套的顺序随意,即([]())或[([][])]等为正确的格式,[(]或([())或(()])均为不正 检验括号匹配,用到栈的知识 利用栈实现括号的匹配 C语言:表达式括号匹配检验(压栈,出栈)最好有语句说明和解题思路 检验括号匹配的算法 数据结构(C) 请用类C语言实现括号匹配的检验这个算法 利用c++ 编写程序,求满足下列条件的所有四位数ABCD的个数,该四位数是8的倍数,A+C=B 用C++语言栈的形式求n!的阶乘以及用栈完成括号匹配检验程序 求高手用栈的操作实现”括号匹配检验“这个程序,用数据结构的知识.谢谢啦! 表达式括号匹配问题一个表达式中包括变量、常量、操作符、圆括号,圆括号可以嵌套,编写程序判断表达式中的括号是否正确匹配.输入任意一个表达式,判断其中括号是否匹配,匹配,输出OK,不 C语言编写一个函数,利用参数传入一个3位数number,找出101~number之间所有满足下列两个条件的数:程序填空,不要改变与输入输出有关的语句.编写一个函数,利用参数传入一个3位数number,找出101 C++用栈解决括号匹配问题,要求第一行输入n表示有n个括号表达式需要判断,以下几行输入括号, 输入一行表达式,判断该表达式中的括号是否匹配.括号要求符合C++表达式的要求.若左括号与右括号匹配,则 编写一道应用题,使它满足下列要求:题意适合一元一次方程X/60=200—X/90. 编写自定义函数prime(int x),判断x是否为素数 .利用此函数编写程序分别找出1~5000中满足下列条件的数x:编写自定义函数prime(int x),判断x是否为素数.利用此函数编写程序分别找出1~5000中满足下列 求用C语言做简单的括号匹配程序 C语言编写计算器要求括号也要求在内,不要指针只求数组和循环,给个思路,关键是括号怎么加上? 编写自定义函数prime(intx),判断x是否为素数.利用此函数编写程序分别找出1-5000中满足下列条件的数x;(1):x是素数;(2):x的各位数字及x本身都是素数;用c语言程序了.