# include <iostream>
using namespace std;
typedef struct // 定义栈
{
char *base;
char *top;
int size;
}stack;
void inite (stack &S) //初始化
{
S.base = (char *)malloc (S.size *sizeof (char));
S.top = S.base ;
S.size = 100;
}
void push (stack &S,char e) // 进栈
{
if (S.top-S.base >= S.size)
return ;
*S.top++ = e;
}
void pop (stack &S,char &e)// 出栈
{
if (S.base == S.top )
return ;
e = * --S.top ;
}
int isempty (stack &S) // 判空
{
if (S.base == S.top )
return 1;
else
return 0;
}
int main ()
{
char e;
stack S;
inite (S);
char ch[100];
char *p = ch;
cout<<"请输入括号"<<endl;
cin>>ch;
while (*p++ != '\0')
{
if (*p++ == ']' || *p++ == ')')
return 0;
else
if (*p++ == *S.top )
pop (S,e);
else
{
e = *p;
push (S,e);
}
}
if (isempty (S) == 1)
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
return 0;
}
大家看看这个代码哪里错了呢 谢谢了
关于数据结构(C语言版)的两个问题
如果为右括号`)`,则检查`stack`是否为空,如果不为空则弹出栈顶元素,将`top`减一。在遍历结束后,检查`stack`是否为空。如果为空,表示所有括号均匹配,返回1;否则表示存在未匹配的括号,返回0。通过上述程序,可以实现对给定字符串中括号匹配性的判断,对于数据结构(C语言版)中的括号匹配问题,...
数据结构栈应用括号匹配算法
1、如遇左括号(不论哪一种),将该左括号入栈;2、如是右括号,如栈为空则返回出错信息,不空就检查其是否与栈顶左括号是否配对,如是则栈顶元素出栈后继续扫描(转1 ),否则,返回出错信息(出错类型:右括号先出现,或左右括号不匹配,出错位置);3、如是其它字符,直接跳过,继续扫描,如表...
...判别表达式中括号是否配对的算法,采用___数据结构最佳。(1分) 顺序...
设计一个判别表达式中括号是否配对的算法,采用栈数据结构最佳如下:一、判别表达式 判别式公式:Δ=b²-4ac。根的判别式是判断方程实根个数的公式,在解题时应用十分广泛,涉及到解系数的取值范围、判断方程根的个数及分布情况等。一元二次方程ax^2+bx+c=0(a≠0)的根的判别式是b^2-4ac,...
请用JS实现一个判断字符串括号是否匹配的方法!
需求:假如我们有一个字符串:esae(dsad[dsa})dsa。我们需要判断这个字符串中的括号是否匹配的上。输入:dsad{ds(dsads)a} 输出:true 输入:asda(ds[dshd]ds(dsad])输出:false 实现思路:很多没有接触过数据结构或者不熟悉的小伙伴来说,他们的思路可能非常的硬核,比如他们可能会有如下思路:直...
C++ 数据结构 判断一个字符串中括号是否匹配
思路是遇到左括号就入栈,碰到右括号就判断栈顶的元素是否匹配的左括号,不是的话就返回false,是的话就弹出栈顶元素,然后继续下一个字符。判断函数如下:bool is_comm_stack(char const* src){ assert(src);char ch;char const* p=src;stack<char> s;while(*p){ switch(*p){ case '(':ca...
c程序设计中的括号匹配 问题描述 1.设某一算术表达式中...
问题描述1.设某一算术表达式中包含圆括号、方括号和花括号三种类型的括号,编写一个算法判断其中的括号是否匹配。2.设计要求(1)程序对所输入的表达式能给出适当的提示信息,表达式中包含括号,括号分为圆括号、方括号和花括号三种类型。(2)允许使用四则混合运算(+,-,*,\/),以及包含变量的算术表达式。(3)只验证...
设计一个判别表达式中左、右括号是否配对出现的算法,
右括号是否配对出现的算法,采用栈数据结构最佳。原因: 栈是一种具有记忆能力的线性表,存取规则是先进后出,判别时遇到一个左括号时就向栈插入左括号,遇到右括号就从栈中删除一个左括号,最后若栈中没有左括号就证明括号成对,所以采用栈最适合判断表达式中括号是否成对出现。
C语言的括号匹配怎么写啊?
了解一下数据结构中的栈(其实就是后入先出),你就知道该怎么实现了。知道怎么实现栈后就很简单了:遇到左括号则入栈,遇到右括号则检查栈内是否有元素,没有元素则结果不匹配,有元素则弹出栈顶元素来查看是否符号相匹配。而检查完毕后如果栈内仍有元素,则不匹配,无元素则匹配 ...
试编写一个算法从检查一个Java语言中的大括号方括号小括号是否配对,若...
要编写用于检查 Java 程序中的大括号、方括号和圆括号是否正确匹配的算法,可以使用堆栈数据结构来跟踪代码中遇到的左大括号。例如,您可以使用以下步骤:初始化空堆栈。循环遍历 Java 程序中的字符,从第一个字符开始。如果当前字符是左大括号(即、、或),则将其推送到堆栈上。{[(如果当前字符是右大...
...右括号是否配对出现的算法,采用什么数据结构最佳。
栈 (Stack)是一种后进先出(last in first off,LIFO)的数据结构。算法基本思想:依次判断表达式中的每个字符,若是左括号就入栈,如果是右括号则出栈,出栈的时候判断是否为空,如果为空,则说明不匹对,最后读到表达式末尾没有字符了,再判断一下栈是否为空,如果为空,则说明匹配,不为空,说明不...