永发信息网

帮我填完整这段程序栈的应用――简单的括号匹配

答案:1  悬赏:80  手机版
解决时间 2021-04-19 08:03
帮我填完整这段程序栈的应用――简单的括号匹配
最佳答案
#include
#define MAX 20
typedef struct
{
char data[MAX]; //栈中的数组data
int top; //栈顶位置
}sstack; //顺序栈

void initstack(sstack *s)//初始化顺序栈
{
s->top= 0;
}

void push(sstack *s, char x)
{
// s为栈指针,x为入栈的新元素,将x压入到s栈顶
if(s->top==MAX-1) //检查是否栈满
printf("栈已满,不能入栈!");
else
{ s->top++; //使top指向新的位置
s->data[s->top-1]=x; //把x放入新栈顶
}
}

void pop(sstack *s)
{ //若栈s不为空,则删除栈顶元素
if(s->top==0 ) //检查是否栈空
printf("栈为空,不能出栈!");
else
s->top--;//修改栈顶指针
}

char gettop(sstack *s)
{ //若栈s不为空,则取得栈顶元素
if(s->top==0) //栈空
printf("栈为空!");
else
return(s->data[s->top]); //返回栈顶元素
}

void check(sstack *s)
{
int bool; char ch;
push(s,'#'); //在栈底压入#,做为结束标志
scanf("%c",&ch); //读入一个字符
bool=1; //假设括号匹配
while(ch!='#'&&bool) //当读入的字符不是结束符且目前括号匹配
{
if(ch=='(') push(s,ch); //如果是左括号则入栈
if(ch==')') //如果是右括号
if(ch=gettop(s)=='#') bool=0; //如果栈顶是结束符,即没有匹配的'(',则设置不匹配标志,此时表

示')'多于'('
else pop(s); //左括号出栈,表与右括号配对
scanf("%c",&ch); //读入下一个字符,继续检查
}
if(gettop(s)!='#')&&bool==1 ; //栈顶还有'(',则'('多于')',设置不匹配标志

if(ch==')') printf("括号不匹配");
else printf("括号匹配");
}

void main()
{
sstack st,*s;
s=&st;
initstack(s); //初始化栈
printf("请输入由'('和')'组成的字符串,该字符串以'#'结束,程序将检查字符串是否括号匹配\n");
check(s);//进行括号匹配的检查
}

说实话,你给的分太少了,呵呵,粗略的做了下,应该可以了
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
如何制作冰糖发糕(具体做法)
一个有信仰的人突然没了信仰,是不是迷失了,
赞美黄金的句子
得天人爱敬是什么意思
我摔倒了又站起来 用英语怎么说
梦见踏尸身水
安全格言企业,求名人名言。挂员工培训室里洗
乐视1s手机看电视时怎么拦截广告
煮过的米糊剩下的还能继续吃么
除夕给老师的祝福语,关于2017年明天就是除夕
李小龙对中国武术的贡献巨大,为什么国内
带晚霞和荷的诗句,荷花。一片秋云一点霞,十
向别人介绍自己的句子,男生卖萌会说的话
比喻浪费时间的诗句,不浪费时间的名言警句
邮政储蓄的 手机银行贴膜卡 有什么用?
推荐资讯
就想找个小对象语录,照样子写句子,雨停了
初中古诗名句
诗词赏析怎么写,诸葛亮写的诗句
销售人员英文怎么说,顶级销售人员用英语怎么
谁知道携程的卡怎么办
男生颜值高是什么体验,男生颜值高的好处
有关中华美德的句子,传承中华美德的古诗。
红烧牛肉是选择出水还是鲜肉用油煸炒?
运动员比赛如何前准备?
用五笔打考勤表三个字
怎样二维码扫描,新浪微博的扫描二维码的在哪
优酷和爱奇艺哪个好用?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?