| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 611 人关注过本帖
标题:关于括号匹配的问题
取消只看楼主 加入收藏
flyrains
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2007-11-19
收藏
 问题点数:0 回复次数:0 
关于括号匹配的问题

关于括号匹配的问题我在c-free下运行,0处错误,0处警告
可是什么都不输了.正常的结果应该是匹配成功输出true

#define STACKINITSIZE 100
#define STACKINCREMENT 10
#include "string.h"
#include "stdio.h"
#include "malloc.h"
typedef struct
{char *base;
char *top;
int stacksize;
}sqstack;
initstack(sqstack s)
{s.base=(char *)malloc(STACKINITSIZE*sizeof(sqstack));
if(!s.base)
{ printf("overflow\n");
return; }
s.top=s.base;
s.stacksize=STACKINITSIZE;
return;
}
push(sqstack s,char e)
{s.stacksize=STACKINITSIZE;
if(s.top-s.base>=s.stacksize)
{s.base=(char *)realloc(s.base,(s.stacksize+STACKINCREMENT)*sizeof(sqstack));
if(!s.base)
{printf("overflow\n");
return;}
s.top=s.base+s.stacksize;
s.stacksize+=STACKINCREMENT;
}
*(s.top)=e;
s.top=s.top+1;
}
char pop(sqstack s)
{char e;
if(s.top==s.base)
{printf("error\n");
return; }
e=*(s.top-1);
return(e) ;
}
int StackEmpty(sqstack s)
{ if(s.base==s.top)
return(1);
else
return(0);
}
int check( )
{
sqstack S;
int n=0;
char ch;
initstack(S);
while ((ch=getchar())!='\n')
{
switch (ch)
{
case ('('): push(S,ch);
case ('['): push(S,ch);
case ('{'): push(S,ch);

case (')'): n=StackEmpty(S) ;
if (n==1) return(0);
else
{ ch=pop(S);
if (ch!='(') return(0);
}
break;
case (']'): n=StackEmpty(S) ;
if (n==1) return(0);
else
{ ch=pop(S);
if (ch!='[') return(0);
}
break;
case ('}'): n=StackEmpty(S) ;
if (n==1) return(0);
else
{ ch=pop(S);
if (ch!='{') return(0);
}
break;
default:break;
}
}
n=StackEmpty(S) ;
if (n==1) return(1);
else return(0);
}
main()
{int m;
m=check();
if(m==0)
printf("false\n");
if(m==1)
printf("ture\n");
getch();
}

[此贴子已经被作者于2007-11-19 13:56:14编辑过]

搜索更多相关主题的帖子: 括号 
2007-11-19 13:55
快速回复:关于括号匹配的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020319 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved