栈和队列问题算法假设一个人算术表达式包含圆括弧、中括弧和花括弧三种类型的括弧,编写一个判别表达式中括弧是否正确匹配的算法
来源:学生作业帮 编辑:搜搜做题作业网作业帮 分类:综合作业 时间:2024/07/16 13:08:37
栈和队列问题算法
假设一个人算术表达式包含圆括弧、中括弧和花括弧三种类型的括弧,编写一个判别表达式中括弧是否正确匹配的算法.
假设一个人算术表达式包含圆括弧、中括弧和花括弧三种类型的括弧,编写一个判别表达式中括弧是否正确匹配的算法.
![栈和队列问题算法假设一个人算术表达式包含圆括弧、中括弧和花括弧三种类型的括弧,编写一个判别表达式中括弧是否正确匹配的算法](/uploads/image/z/1411727-23-7.jpg?t=%E6%A0%88%E5%92%8C%E9%98%9F%E5%88%97%E9%97%AE%E9%A2%98%E7%AE%97%E6%B3%95%E5%81%87%E8%AE%BE%E4%B8%80%E4%B8%AA%E4%BA%BA%E7%AE%97%E6%9C%AF%E8%A1%A8%E8%BE%BE%E5%BC%8F%E5%8C%85%E5%90%AB%E5%9C%86%E6%8B%AC%E5%BC%A7%E3%80%81%E4%B8%AD%E6%8B%AC%E5%BC%A7%E5%92%8C%E8%8A%B1%E6%8B%AC%E5%BC%A7%E4%B8%89%E7%A7%8D%E7%B1%BB%E5%9E%8B%E7%9A%84%E6%8B%AC%E5%BC%A7%2C%E7%BC%96%E5%86%99%E4%B8%80%E4%B8%AA%E5%88%A4%E5%88%AB%E8%A1%A8%E8%BE%BE%E5%BC%8F%E4%B8%AD%E6%8B%AC%E5%BC%A7%E6%98%AF%E5%90%A6%E6%AD%A3%E7%A1%AE%E5%8C%B9%E9%85%8D%E7%9A%84%E7%AE%97%E6%B3%95)
算法不好, 也没做很多的测试, 很可能有BUG, 你再测试测试
其实更好的办法是做一个栈
#include
int main (int argc, char **argv)
{
char ch;//存储一个字符
char arrch[256];//存储多个字符
int num = -1;//指向arrch的最后一个字符
while ((ch = getchar ()) != '\n')
{
//如果输入的字符是(、[、{ 压入数组中
if (ch == '(')
arrch[++num] = ch;
if (ch == '[')
arrch[++num] = ch;
if (ch == '{')
arrch[++num] = ch;
//如果是)、]、}先判断num是否小于0, 如果小于0则肯定是错误的
//如果不小于0再看最后一个字符是否和刚输入的对应,如果不对应也是错的
//如果对应则num向前移一位
if (ch == ']')
{
if (num < 0 || arrch[num] != '[')
{
printf ("Error");
return 1;
}
--num;
}
if (ch == ')')
{
if (num < 0 || arrch[num] != '(')
{
printf ("Error");
return 1;
}
--num;
}
if (ch == '}')
{
if (num < 0 || arrch[num] != '{')
{
printf ("Error");
return 1;
}
--num;
}
}
//num不为-1则表明有不对应的括号
if (num == -1)
{
printf ("OK!");
}
else
{
printf ("Error");
}
getchar ();
return 0;
}
其实更好的办法是做一个栈
#include
int main (int argc, char **argv)
{
char ch;//存储一个字符
char arrch[256];//存储多个字符
int num = -1;//指向arrch的最后一个字符
while ((ch = getchar ()) != '\n')
{
//如果输入的字符是(、[、{ 压入数组中
if (ch == '(')
arrch[++num] = ch;
if (ch == '[')
arrch[++num] = ch;
if (ch == '{')
arrch[++num] = ch;
//如果是)、]、}先判断num是否小于0, 如果小于0则肯定是错误的
//如果不小于0再看最后一个字符是否和刚输入的对应,如果不对应也是错的
//如果对应则num向前移一位
if (ch == ']')
{
if (num < 0 || arrch[num] != '[')
{
printf ("Error");
return 1;
}
--num;
}
if (ch == ')')
{
if (num < 0 || arrch[num] != '(')
{
printf ("Error");
return 1;
}
--num;
}
if (ch == '}')
{
if (num < 0 || arrch[num] != '{')
{
printf ("Error");
return 1;
}
--num;
}
}
//num不为-1则表明有不对应的括号
if (num == -1)
{
printf ("OK!");
}
else
{
printf ("Error");
}
getchar ();
return 0;
}
栈和队列问题算法假设一个人算术表达式包含圆括弧、中括弧和花括弧三种类型的括弧,编写一个判别表达式中括弧是否正确匹配的算法
括弧里的括弧 怎么写
括弧是什么意思?
WORD中怎样输入大括弧的公式?
word 编辑文档中输入数字编号时用到括弧 ,为什么括弧的格式有时不一样,怎么办?
如何在word中插入上下括弧
请把括弧里的词语换一换:
在word里面怎么打出大括弧啊?就是有弯的那种最大的括弧
弱问:word里如何插入大括弧呢,就是那种花括弧.word2003的
根据括弧中的提示写出形式和拼写正确的单词 1.There are many ways to r
【2x*(-3x的平方)的3次方】的平方 【 】中括弧
看()贵宾,括弧中填与看相近的词,例如:望等等