| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 268 人关注过本帖
标题:一个括号匹配的,执行时就错误,编译通过了。
只看楼主 加入收藏
NeQhk
Rank: 2
等 级:论坛游民
威 望:1
帖 子:164
专家分:85
注 册:2014-7-19
结帖率:69.23%
收藏
 问题点数:0 回复次数:0 
一个括号匹配的,执行时就错误,编译通过了。
#include<stdio.h>
#include<malloc.h>
typedef char ElemType;
typedef struct linknode
{
  ElemType data;
  struct linknode *next;
}listack;

void initstack(listack *s)
{
   s=(listack *)malloc(sizeof(listack));
   s->next = NULL;
}
void destroystack(listack *s)
{
    listack *p=s,*q=s->next;
    while(q!=NULL)
    {
      free(p);
      p=q;
      q=p->next;
    }
}

bool stackempty(listack *s)
{
   return(s->data==NULL);
}
void push(listack *s,ElemType e)
{
   listack *p;
   p=(listack *)malloc(sizeof(listack));
   p->data=e;
   p->next=s->next;
   s->next=p;
}

int  pop(listack *s,ElemType &e)
{
   listack *p;
   if(s->next==NULL)
   {
     return 0;
   }
   p=s->next;
   e=p->data;
   s->next=p->next;
   free(p);
   return 1;
}
int gettop(listack *s,ElemType &e)
{
  if(s->next==NULL)
      return 0;
  e=s->next->data;
  return 1;
}
int match(char exp[],int n)
{
  int i=0;char e;
  int flag=1;
  listack *s=NULL;
  initstack(s);
  while(i<n && flag)
  {
    if(exp[i]=='(')
        push(s,exp[i]);
    else if(exp[i]==')')
    {
       if(gettop(s,e)==1)
       {
           if(e!='(')
              flag=0;
           else
               pop(s,e);
       }
       else
           flag =0;//无法取栈顶元素表示不匹配
    }
    i++;
  }
  if(!stackempty(s))
  {
     flag=0;
  }
  destroystack(s);
  return flag;
}

int main()
{
   char str[100];
   int i;
   int n;
   scanf("%d",&n);
   for(i=0;i<n;i++)
   {
       scanf("%c",&str[i]);
   }
   if(!match(str,n))
       printf("不匹配");
   else
       printf("匹配");
   return 0;

}
搜索更多相关主题的帖子: include return 
2015-04-05 19:22
快速回复:一个括号匹配的,执行时就错误,编译通过了。
数据加载中...
 
   



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

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