标题:括号匹配为什么不成功
只看楼主
cwl168
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2012-12-14
结帖率:8.33%
 问题点数:0 回复次数:4 
括号匹配为什么不成功
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#define stack_size 1000
#define stack_increment 10
typedef struct sqstack
{
      char *base;
      char *top;
      int size;
}sqstack;
void IntiStack(sqstack *s)
{
      s->base=(char *)malloc(sizeof(char)*stack_size);
      if(!s->base) printf("分配内存失败!");
      s->top=s->base;
      s->size=stack_size;

}
void Push(sqstack *s,char c)
{
     if(s->top-s->base>=stack_size)
     {
       s->base=(char*)realloc(s->base,(s->size+stack_increment)*sizeof(char));
       if(!s->base) printf("增加空间失败!");
       s->top=s->base+stack_size;
       s->size+=stack_increment;
     }
      *s->top++=c;
 
}
void  Pop(sqstack *s,char e)
{
   if(s->top==s->base) printf("栈为空\n");
   e=*--s->top;
}
int StackEmpty(sqstack *s)
{
    if(s->top!=s->base) return 0;
    return 1;
}
void Bracket(sqstack *s,char *str)
{
  int i=0,flag1=0,flag2;
  char e;
  while(str[i]!='\0'){
    switch(str[i]){
      case '(':Push(s,'(');break; //'('进栈
      case '[':Push(s,'[');break; //'['进栈
      case ')':{Pop(s,e);
                if(e!='(') flag1=1; break;} //出栈,判断是否为'('
      case ']':{Pop(s,e);
                if(e!='[') flag1=1;break;} //出栈,判断是否为'['
      default: break;
    }
    if(flag1) break; //出现不匹配,立即结束循环
    i++;
  }
  flag2=StackEmpty(s); //flag2判断堆栈是否为空
  if(!flag1 && flag2) printf("括号匹配!\n");
  else printf("括号不匹配!\n");
  
}
int main()
{
     sqstack s;char str[100],temp;
     printf("请输入字符串:\n");
     scanf("%s",str);
     scanf("%c",&temp);//接受输入的回车键
     IntiStack(&s);
     Bracket(&s,str);
     return 0;
}
搜索更多相关主题的帖子: void 成功 include 
2013-01-25 22:58
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
编译没啥问题  运行肯定会出错滴

DO IT YOURSELF !
2013-01-25 23:00
cwl168
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2012-12-14
得分:0 
错在哪里
2013-01-26 09:02
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
回复 3楼 cwl168
不知道你用的啥ide啊

那个警告信息没有吗

有个变量e没有初始化呢

DO IT YOURSELF !
2013-01-26 09:04
cwl168
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2012-12-14
得分:0 
编译,链接,执行通过,但是执行的结果错误的
2013-01-26 10:03



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-397664-1-1.html




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

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