• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

promote-L

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

栈的应用-括号匹配问题

#include<iostream>
using namespace std;
#define MaxSize 10

typedef struct
{
char data[MaxSize];
int top;
}SqStack;
void InitStack(SqStack& S);
bool IsEmpty(SqStack& S);
bool InStack(SqStack& S, char x);
bool OutStack(SqStack& S);
void Instring(char str[],int length);
bool BracketCheck(SqStack& S,char str[], int length);
int main()
{
SqStack S;
char str[MaxSize];
InitStack(S);
cout << "输入字符数量 :" << endl;
int length;
cin >> length;
Instring(str,length);
BracketCheck(S,str, length);
system("pause");
return 0;
}


//初始化栈
void InitStack(SqStack &S)
{
S.top = -1;

}
//判断栈是否为空
bool IsEmpty(SqStack& S)
{
if (S.top == -1)
return true;
else
return false;

}
//入栈
bool InStack(SqStack& S, char x)
{
if (S.top == MaxSize - 1)
{
cout << "栈满 " << endl;
return false;
}
S.top = S.top + 1;
S.data[S.top] = x;
return true;
}
//出栈
bool OutStack(SqStack& S,char &x)
{
if (IsEmpty(S))
{
cout << "栈空!" << endl;
return false;
}
x=S.data[S.top];
S.top--;
return true;

}
//字符串数组写入
void Instring(char str[],int length)
{

cout << "依次输入" << length << "个字符" << endl;
for (int i = 0; i < length; i++)
{
cin >> str[i];
}

}
//括号匹配
bool BracketCheck(SqStack&S,char str[], int length)
{
for (int i = 0; i < length; i++)
{
if (str[i] == '(' || str[i] == '[' || str[i] == '{')
{
InStack(S, str[i]);
}
else
{
if (IsEmpty(S))
{
cout << "匹配失败!"<< endl;
}
char topElem;
OutStack(S, topElem);
if (str[i] == ')' && topElem != '(')
{
cout << "匹配失败!" << endl;
return false;
}
if (str[i] == ']' && topElem != '[')
{
cout << "匹配失败!" << endl;
return false;
}
if (str[i] == '}' && topElem != '{')
{
cout << "匹配失败!" << endl;
return false;
}
}
}
if (IsEmpty(S))
cout << "匹配成功!" << endl;
else
cout << "匹配失败!" << endl;
return IsEmpty(S);

}

 

posted on 2023-02-08 19:32  浪訫  阅读(25)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3