括号匹配检验程序#include#include#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0typedef char SElemType;typedef int Status;#define STACK_INIT_SIZE 100#define STACKINCREMENT 10typedef struct{SElemType *base;SElemType *top;int stacksize;

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/07 22:49:44

括号匹配检验程序#include#include#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0typedef char SElemType;typedef int Status;#define STACK_INIT_SIZE 100#define STACKINCREMENT 10typedef struct{SElemType *base;SElemType *top;int stacksize;
括号匹配检验程序
#include
#include
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
typedef char SElemType;
typedef int Status;
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
typedef struct{
SElemType *base;
SElemType *top;
int stacksize;
}SqStack;
Status InitStack(SqStack &S)
{
S.base = (SElemType *)malloc(STACK_INIT_SIZE *sizeof(SElemType));
if(!S.base) return FALSE;
S.top = S.base;
S.stacksize = STACK_INIT_SIZE;
return OK;
}
Status GetTop(SqStack S,SElemType &e)
{
if(S.base == S.top) return ERROR;
e = *(S.top-1);
return OK;
}
Status Push(SqStack &S,SElemType e)
{
*S.top++ = e;
return OK;
}
Status Pop(SqStack &S,SElemType &e)
{
if(S.top == S.base)return ERROR;
e = *--S.top;
return OK;
}
Status StackEmpty(SqStack &S)
{
if(S.base == S.top)return TRUE;
else return FALSE;
}
main()
{
SqStack S;
SElemType e,f;
InitStack(S);
// e=getchar();
e='[';
Push(S,e);
while(e = ']'){
// e=getchar();
e=']';
if(e-*(S.top-1) == 1 || e-*(S.top-1) == 2)Pop(S,f);
else Push(S,e);
}
if(StackEmpty(S)) return TRUE;
else return FALSE;
}
我是数据结构初学者 这个检验括号匹配程序不知道出现什么问题 总是得不到预期结果 请高手帮我看看
清华大学出的

括号匹配检验程序#include#include#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0typedef char SElemType;typedef int Status;#define STACK_INIT_SIZE 100#define STACKINCREMENT 10typedef struct{SElemType *base;SElemType *top;int stacksize;
从你的代码可以看出,你想在开始将‘[’压栈,作为结束条件.
在循环中采集每次的输入字符,如果不匹配,则压栈输入字符;如果匹配,为‘]’字符,则将栈中所有字符全部出栈.
上面代码的主要问题是循环条件的判断的问题,你可以分析下.
下面是我在你的代码基础上进行了小小修改后的代码,提供给你参考下.(保存为CPP文件,用C++编译测试通过).
#include
#include
#include
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
typedef char SElemType;
typedef int Status;
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
typedef struct _SqStack{
SElemType *base;
SElemType *top;
int stacksize;
}SqStack;
Status InitStack(SqStack &S)
{
S.base = (SElemType *)malloc(STACK_INIT_SIZE *sizeof(SElemType));
if(!S.base)
return FALSE;
S.top = S.base;
S.stacksize = STACK_INIT_SIZE;
return OK;
}
Status Push(SqStack &S, SElemType e)
{
*S.top++ = e;
printf("0x%.8x: PUSH %c\n", S.top, e);
return OK;
}
Status Pop(SqStack &S, SElemType &e)
{
if(S.top == S.base)
return ERROR;
e = *--S.top;
printf("0x%.8x: POP %c\n", S.top, e);
return OK;
}
Status StackEmpty(SqStack &S)
{
if(S.base == S.top)
return TRUE;
else
return FALSE;
}
main()
{
SqStack S;
SElemType e;
//初始化栈
InitStack(S);
//将[ 压入栈底,作为结束条件
e='[';
Push(S, e);
//循环接收键盘字符,
//不匹配则将字符压栈,
//匹配则将[ 与 ] 之间字符全部出栈,只到栈底结束
while(S.top > S.base)
{
fflush(stdin);
e = getchar();
if (e != ']')
{
Push(S, e);
}
else
{
printf("\n");
printf("----Get matched char ']'\n");
printf("----POP Stack----\n");
S.top --;
while(*(S.top)!= '[')
{
Pop(S, e);
}
}
fflush(stdout);
}
Pop(S, e);
printf("\n");
//释放栈
if(StackEmpty(S))
return TRUE;
else
return FALSE;
}

括号匹配检验程序#include#include#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0typedef char SElemType;typedef int Status;#define STACK_INIT_SIZE 100#define STACKINCREMENT 10typedef struct{SElemType *base;SElemType *top;int stacksize; 检验括号匹配的算法 检验括号匹配,用到栈的知识 用C++语言栈的形式求n!的阶乘以及用栈完成括号匹配检验程序 求高手用栈的操作实现”括号匹配检验“这个程序,用数据结构的知识.谢谢啦! 求用C语言做简单的括号匹配程序 c++括号匹配检验利用栈编写满足下列要求的括号匹配检验程序:假设表达式中允许包含两种括号:圆括号和方括号,其嵌套的顺序随意,即([]())或[([][])]等为正确的格式,[(]或([())或(()])均为不正 表达式括号匹配问题一个表达式中包括变量、常量、操作符、圆括号,圆括号可以嵌套,编写程序判断表达式中的括号是否正确匹配.输入任意一个表达式,判断其中括号是否匹配,匹配,输出OK,不 C语言:表达式括号匹配检验(压栈,出栈)最好有语句说明和解题思路 数据结构(C) 请用类C语言实现括号匹配的检验这个算法 能说说你写你把个括号匹配程序的算法思路吗? 括号匹配问题 数据结构括号匹配问题? matlab括号匹配 这个程序咋写啊!请写一个程序,判断给定表达式中的括号是否匹配.表达式中的合法括号为“(”、“)”、“[”、“]”、“{”、“}”,这三种括号可以按照任意的次序嵌套使用,但不能交叉使 括号匹配检验的问题从键盘接收一个字符串(长度最长设为100),检测其中的括号(),[],{}匹配情况,若有成对括号(包括中括号和大括号)则在屏幕输出括号对及其所包含的字符内容.要在屏幕上输 Inc. C程序有道题解析看不懂编写一个程序求出两个字符串:s[]=”Thisis C programming text”t[]=”Thisis a text for C programming”包含最长的相同单词(同一字母的大小写视为不同的字符).程序:#include #inc