EvanRoyal 2022-04-08 21:04 采纳率: 100%

# /***链栈实现括号匹配***/

/链栈实现括号匹配/

#include
using namespace std;

#define OK 1
#define ERROR 0
#define OVERFLOW -2
typedef char SElemType;
typedef int Status;
typedef struct SNode {
int data;
struct SNode *next;

S = NULL;
return OK;
}
if (!S)
return true;
return false;
}
Status Push(LinkStack &S, SElemType e) {//入栈
SNode *p = new SNode;
if (!p) {
return OVERFLOW;
}
p->data = e;
p->next = S;
S = p;
return OK;
}
Status Pop(LinkStack &S, SElemType &e) {//出栈
SNode *p;
if (!S)
return ERROR;
e = S->data;
p = S;
S = S->next;
delete p;
return OK;
}
if (!S)
return ERROR;
return S->data;
}

//算法3.21　括号的匹配
Status Matching() {//检验表达式中所含括号是否正确匹配，如果匹配，则返回true，否则返回false
//表达式以“#”结束

}
int main() {
cout << "请输入待匹配的表达式，以“#”结束：" << endl;
int flag = (int) Matching();
if (flag)
cout << "括号匹配成功！" << endl;
else
cout << "括号匹配失败！" << endl;
return 0;
}

• 写回答

#### 3条回答默认 最新

• 关注

你题目的解答代码如下：

``````#include <iostream>
using namespace std;

#define OK 1
#define ERROR 0
#define OVERFLOW -2
typedef char SElemType;
typedef int Status;
typedef struct SNode
{
int data;
struct SNode *next;

{ //初始化栈
S = NULL;
return OK;
}
{ //判断栈是否为空
if (!S)
return true;
return false;
}
{ //入栈
SNode *p = new SNode;
if (!p)
{
return OVERFLOW;
}
p->data = e;
p->next = S;
S = p;
return OK;
}
{ //出栈
SNode *p;
if (!S)
return ERROR;
e = S->data;
p = S;
S = S->next;
delete p;
return OK;
}
{ //取栈顶元素
if (!S)
return ERROR;
return S->data;
}

//算法3.21　括号的匹配
Status Matching()
{ //检验表达式中所含括号是否正确匹配，如果匹配，则返回true，否则返回false
//表达式以“#”结束
SElemType ch,ch2;
InitStack(S);
cin >> ch;
while (ch!='#')
{
switch(ch){
case '(':
Push(S, ')');
break;
case '{':
Push(S, '}');
break;
case '[':
Push(S, ']');
break;
case '}':
case ']':
case ')':
if(StackEmpty(S))
return false;
else {
ch2 = GetTop(S);
if(ch==ch2){
Pop(S,ch2);
}
else
return false;
}
}
cin >> ch;
}
if(StackEmpty(S))
return true;
else
return false;
}
int main()
{
cout << "请输入待匹配的表达式，以“#”结束：" << endl;
int flag = (int)Matching();
if (flag)
cout << "括号匹配成功！" << endl;
else
cout << "括号匹配失败！" << endl;
return 0;
}
``````

如有帮助，请点击我的回答下方的【采纳该答案】按钮帮忙采纳下，谢谢!

本回答被题主选为最佳回答 , 对您是否有帮助呢?
评论

• 系统已结题 6月14日
• 已采纳回答 6月6日
• 创建了问题 4月8日

#### 悬赏问题

• ¥15 调用函数时，无关变量的改变引起函数值的改变
• ¥15 xy坐标转化为经纬度坐标
• ¥15 一般三角模糊数的上界值和下届值取中值的多少比较合理？
• ¥15 关于#python#的问题，请各位专家解答！
• ¥20 Hbase启动失败，无法启动HMaster
• ¥15 sqpingboot在父模块已经引入了mybatisplus 在子组件不写版本号还是报错
• ¥20 Lumerical FDTD solutions 中模型的相对阻抗，有效介电常数和有效磁导率的实部和虚部的数据如何获得？
• ¥100 sql reporting service 远程smtp服务器配置支持
• ¥15 ppyoloe_r带角度目标检测，loss_cls没法收敛
• ¥15 淘宝交易指数如何解读，其关联的数据指标是什么