用栈实现检验括号匹配的算法

没啥具体描述,数据结构的知识,急用,有重赏... 没啥具体描述,数据结构的知识,急用,有重赏 展开
 我来答
京雁风0gz
2012-10-15 · TA获得超过829个赞
知道小有建树答主
回答量:933
采纳率:50%
帮助的人:627万
展开全部
思想是 先进栈,获取第一个半边括号,标记一下,继续进栈直到获取到第二个与之匹配的另一外括号,然后出栈,取出内容。就这样。。
追问
你会图的遍历吗
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Sievers分析仪
2025-02-09 广告
是的。传统上,对于符合要求的内毒素检测,最终用户必须从标准内毒素库存瓶中构建至少一式两份三点标准曲线;必须有重复的阴性控制;每个样品和PPC必须一式两份。有了Sievers Eclipse内毒素检测仪,这些步骤可以通过使用预嵌入的内毒素标准... 点击进入详情页
本回答由Sievers分析仪提供
玫瑰人生1999
推荐于2017-09-02 · TA获得超过142个赞
知道答主
回答量:35
采纳率:0%
帮助的人:26.4万
展开全部
#include <stdio.h>
#include <string.h>

#define MAX_STACK 100

struct stStack
{
char szStack[MAX_STACK];
int nTop;
};

void InitStack(stStack& s)
{
s.nTop = -1;
}

char Push(stStack& s, char c)
{
if (s.nTop == MAX_STACK - 1)
return 0;

s.nTop ++;
s.szStack[s.nTop] = c;
return c;
}

char Pop(stStack& s)
{
if (s.nTop == -1)
return 0;

char c = s.szStack[s.nTop];
s.nTop--;
return c;
}

int Check(char* szText)
{
stStack s;
InitStack(s);
int nLen = strlen(szText);
for (int i = 0; i < nLen; i++)
{
char c = szText[i];

switch (c)
{
case '(':
case '{':
case '[':
Push(s, c);
break;

case ')':
if (Pop(s) != '(')
return 0;
break;
case '}':
if (Pop(s) != '{')
return 0;
break;
case ']':
if (Pop(s) != '[')
return 0;
break;
}
}
return 1;
}

int main()
{
char szText[100];
scanf("%s", szText);

if (Check(szText))
{
printf("合法\n");
}
else
{
printf("失败\n");
}
return 0;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式