| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 723 人关注过本帖
标题:输入“ [ ] ”为什么不匹配,求高手指点
取消只看楼主 加入收藏
凌云飞翔
Rank: 5Rank: 5
来 自:河北
等 级:职业侠客
威 望:6
帖 子:98
专家分:388
注 册:2012-4-7
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:5 
输入“ [ ] ”为什么不匹配,求高手指点
#include  <stdio.h >
#include <stdlib.h>
#define  OVERFLOW   -2
#define  OK  1
#define STACK_INIT_SIZE   100
#define  STACKINCREMENT  10  
typedef  char SElemType  ;
typedef   int Status   ;   
typedef struct {  
      SElemType  *base   ;
      SElemType  *top    ;
      int  stacksize  ;
}  SqStack    ;
 Status    StackEmpty  (SqStack  s  )
{ if  (s.base==s.top)  return 1;
    else  return 0  ;
} //stackempty
Status  InitStack  (SqStack  &s)
{  s.base=(SElemType  *)malloc (STACK_INIT_SIZE *sizeof (SElemType ))  ;
    if (!s.base)  exit (OVERFLOW )   ;
     s.top = s.base ;
     s.stacksize =STACK_INIT_SIZE ;
     return  OK  ;
}//initstack  
Status  Push (SqStack &s  ,SElemType e  )
{  if (s.top -s.base >=s.stacksize )//栈满,追加存储空间
{   s.base = (SElemType *) realloc (s.base,(s.stacksize +STACKINCREMENT)
                                    *sizeof (SElemType) )  ;
        if (!s.base) exit  ( OVERFLOW ) ;//存储分配失败
        s.stacksize +=STACKINCREMENT  ;
}
         *s.top++=e  ;
        return  OK  ;  
}//push  
 Status Pop  (SqStack  &s  , SElemType *e)
 { if  (s.top==s.base  ) return  0  ;

  *e =*--s.top ;
  return  OK  ;
 }// pop
 Status GetTop (SqStack s  ,SElemType  *e )
 {  if (s.top ==s.base ) return  0   ;
*e = *(s.top-1)  ;
 return  1 ;
 }//gettop
main ()
{  int  i=0  ;
 SqStack    s  ;
    char a[20]  , ch ,e  ;
   InitStack  ( s) ;
printf ("请输入括号且长度不能超过20 :\n")  ;
while ((ch=getchar())!='\n')  
{   a[i]=ch  ;
     i++  ;  
 
}
 for  (i=0 ;a[i]!='\n' ;i++)  
 {  switch  (a[i])
 {        case '(' :  
         case '[' :
         case '{' :
              Push (s ,a[i])  ; break  ;
         case ')' :
         case '}' :  
         case ']' :   
                   if  (StackEmpty  (s ))   
                 {printf ("括号不匹配\n")  ; return  ;}
                else   {  GetTop (s,&e)  ;
                   if ((a[i]-e==1)||(a[i]-e==2))
                       Pop  (s  , &e )  ;
                   else  { printf ("括号不匹配\n");  return ;  }
                }
 }
 }
   if ( StackEmpty (s))  
   printf ("括号匹配\n") ;
    else  printf ("括号不匹配\n") ;
}
        
  
搜索更多相关主题的帖子: top return include 
2012-10-17 17:14
凌云飞翔
Rank: 5Rank: 5
来 自:河北
等 级:职业侠客
威 望:6
帖 子:98
专家分:388
注 册:2012-4-7
收藏
得分:0 
回复 2楼 embed_xuel
是英文的。。。
2012-10-17 17:23
凌云飞翔
Rank: 5Rank: 5
来 自:河北
等 级:职业侠客
威 望:6
帖 子:98
专家分:388
注 册:2012-4-7
收藏
得分:0 
可能逻辑上有错误吧。。辛苦啦
2012-10-18 07:54
凌云飞翔
Rank: 5Rank: 5
来 自:河北
等 级:职业侠客
威 望:6
帖 子:98
专家分:388
注 册:2012-4-7
收藏
得分:0 
回复 7楼 pengzhuo2008
再帮忙看一下,若输入“][”时,为什么也显示“括号匹配”?辛苦啦。。
2012-10-18 13:37
凌云飞翔
Rank: 5Rank: 5
来 自:河北
等 级:职业侠客
威 望:6
帖 子:98
专家分:388
注 册:2012-4-7
收藏
得分:0 
回复 9楼 pengzhuo2008
谢啦,可以啦。输入法的问题。。厉害
2012-10-18 17:54
凌云飞翔
Rank: 5Rank: 5
来 自:河北
等 级:职业侠客
威 望:6
帖 子:98
专家分:388
注 册:2012-4-7
收藏
得分:0 
恩,解决了
2012-11-30 23:44
快速回复:输入“ [ ] ”为什么不匹配,求高手指点
数据加载中...
 
   



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

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