| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2107 人关注过本帖
标题:求括号的匹配,求结果?
只看楼主 加入收藏
qizhongshun
Rank: 2
等 级:论坛游民
威 望:1
帖 子:31
专家分:26
注 册:2011-9-16
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:15 
求括号的匹配,求结果?
这是我的程序,
#include"stdio.h"
#define STACK_INIT_SIZE 20
#define STACKINCRE MENT 10
typedef char  ElemType   /*将char类定义为ElemType*/
typedef struct{          /*定义一个栈类型*/
    ElemType *base;
    ElemType *top;
    int stacksize;
}sqstack;
initstack(sqstack*s)
{
    s->stack=(ElemType*)malloc(STACK_INIT_SIZE*sizeof(ElemType));
    if(!s->stack) exit(0);
    s->top=s->base;
    s->stacksize=STACK_INIT_SIZE;
}
push(stack*s,ElemType){
    if(s->top-s->base>=stacksize)
    {
        s->base=(ElemType*)malloc(s->base,(s->stacksize+STACKINCREMENT)sizeof(ElemType));
        if(!s->base) exit(0);
        s->top=s->base+stacksize;  /*..................*/
    }
    *(s->stop)=e;
    s->top++;
}
pop(sqstack*s,ElemType*e){
    if(s->top=s->base) return;
    *e=*--(s->top);
}
int stackLen(sqstack s){
    return (s.base-s.top)    /*...........*/
}
int match(char e,char c){
if(e=='('&&c=')' return 1;
if(e=='['&&c==']' return 1;
return 0;
}
main()
{sqstack s;
char e,c;
initstack(&s);
scanf("%c",&c);
while(c!='#'){
    if(!stackLen(s))
        push(&s,c);
    else
    {pop(&s,&e);
    if(!match(e,c)){
        push(&s,e);
        push(&s,c);
    }
    }
    scanf("%c",&c);
}
if(!stackLen(s)) printf("the branchets are matched/n");
else printf("the branchets are matched/n");
getche();
}

结果一直都是
--------------------Configuration: .dsp - Win32 Debug--------------------
Compiling...
Error spawning cl.exe

.obj - 1 error(s), 0 warning(s)
怎么解释?请高手指点。
搜索更多相关主题的帖子: include 
2011-11-06 10:14
huanega
Rank: 3Rank: 3
来 自:内蒙古
等 级:论坛游侠
帖 子:117
专家分:192
注 册:2011-11-4
收藏
得分:3 
意思生成  C1.exe文件错误,你的程序我看不懂呢!

兴趣是编程最好的老师
2011-11-06 10:17
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:3 
回复 楼主 qizhongshun
typedef char  ElemType   /*将char类定义为ElemType*/
这句少分号

总有那身价贱的人给作业贴回复完整的代码
2011-11-06 10:20
huanega
Rank: 3Rank: 3
来 自:内蒙古
等 级:论坛游侠
帖 子:117
专家分:192
注 册:2011-11-4
收藏
得分:0 
1>e:\编程\函数调用\函数调用\c1.cpp(5): error C2143: 语法错误 : 缺少“;”(在“<class-head>”的前面)
1>e:\编程\函数调用\函数调用\c1.cpp(11): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>e:\编程\函数调用\函数调用\c1.cpp(12): error C2039: “stack”: 不是“sqstack”的成员
1>          e:\编程\函数调用\函数调用\c1.cpp(5) : 参见“sqstack”的声明
1>e:\编程\函数调用\函数调用\c1.cpp(12): error C3861: “malloc”: 找不到标识符
1>e:\编程\函数调用\函数调用\c1.cpp(13): error C2039: “stack”: 不是“sqstack”的成员
1>          e:\编程\函数调用\函数调用\c1.cpp(5) : 参见“sqstack”的声明
1>e:\编程\函数调用\函数调用\c1.cpp(13): error C3861: “exit”: 找不到标识符
1>e:\编程\函数调用\函数调用\c1.cpp(16): warning C4508: “initstack”: 函数应返回一个值;假定“void”返回类型
1>e:\编程\函数调用\函数调用\c1.cpp(17): error C2065: “s”: 未声明的标识符
1>e:\编程\函数调用\函数调用\c1.cpp(17): error C2275: “ElemType”: 将此类型用作表达式非法
1>          e:\编程\函数调用\函数调用\c1.cpp(5) : 参见“ElemType”的声明
1>e:\编程\函数调用\函数调用\c1.cpp(17): error C2448: “push”: 函数样式初始值设定项类似函数定义
1>e:\编程\函数调用\函数调用\c1.cpp(27): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>e:\编程\函数调用\函数调用\c1.cpp(28): warning C4508: “pop”: 函数应返回一个值;假定“void”返回类型
1>e:\编程\函数调用\函数调用\c1.cpp(33): error C2143: 语法错误 : 缺少“;”(在“}”的前面)
1>e:\编程\函数调用\函数调用\c1.cpp(35): warning C4305: “=”: 从“char”到“bool”截断
1>e:\编程\函数调用\函数调用\c1.cpp(35): error C2106: “=”: 左操作数必须为左值
1>e:\编程\函数调用\函数调用\c1.cpp(35): error C2143: 语法错误 : 缺少“)”(在“return”的前面)
1>e:\编程\函数调用\函数调用\c1.cpp(36): error C2143: 语法错误 : 缺少“)”(在“return”的前面)
1>e:\编程\函数调用\函数调用\c1.cpp(40): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>e:\编程\函数调用\函数调用\c1.cpp(46): error C3861: “push”: 找不到标识符
1>e:\编程\函数调用\函数调用\c1.cpp(50): error C3861: “push”: 找不到标识符
1>e:\编程\函数调用\函数调用\c1.cpp(51): error C3861: “push”: 找不到标识符
1>e:\编程\函数调用\函数调用\c1.cpp(58): error C3861: “getche”: 找不到标识符
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
在我编译器好多错误,自己参照吧!

[ 本帖最后由 huanega 于 2011-11-6 10:25 编辑 ]

兴趣是编程最好的老师
2011-11-06 10:22
Lgothic
Rank: 1
等 级:新手上路
帖 子:2
专家分:3
注 册:2011-11-5
收藏
得分:3 
错的太多了:
1,typedef char  ElemType   /*将char类定义为ElemType*/   这句后面要加分号;
2,s->stack=(ElemType*)malloc(STACK_INIT_SIZE*sizeof(ElemType));   sqstack结构体里面没有stack这个变量吧
    .
    .
    .
    .
初始化的时候错了,其他根本不可能进行下去....
 
 
2011-11-06 10:38
qizhongshun
Rank: 2
等 级:论坛游民
威 望:1
帖 子:31
专家分:26
注 册:2011-9-16
收藏
得分:0 
  要的就是这个答案 我在调试调试
2011-11-06 10:50
qizhongshun
Rank: 2
等 级:论坛游民
威 望:1
帖 子:31
专家分:26
注 册:2011-9-16
收藏
得分:0 
回复 4楼 huanega
#include<stdio.h>
#define STACK_INIT_SIZE 20
#define STACKINCREMENT 10
typedf char ElemType
typedf struct{
    ElemType *base;
    ElemType *top;
    int stacksize;
}sqstack;
initstack(sqstack*s)
{
    s->base=(ElemType*)malloc(STACK_INIT_SIZE*sizeof(ElemType));
    if(!s->base) exit(0);
    s->top=s->base;
    s->stacksize=STACK_INIT_SIZE;
}
push(stack*s,ElemType){
    if(s->top-s->base>=s->stacksize)
    {
        s->base=(Elemtype*)realloc(s->base,(s->stacksize+STACKINCREMENT)*sizeof(ElemType));
        if(!s->base) exit(0);
        s->top=s->base+s->stacksize;  
                s->stacksize=s->stacksize+STACKINICREMENT;
    }
    *(s->stop)=e;
    s->top++;
}
pop(sqstack*s,ElemType*e){
    if(s->top=s->base) return;
    *e=*--(s->top);
}
int stackLen(sqstack s){
    return (s.top-s.base)   
}
int match(char e,char c){
if(e=='('&&c==')' return 1;
if(e=='['&&c==']' return 1;
return 0;
}
main()
{sqstack s;
char e,c;
initstack(&s);
scanf("%c",&c);
while(c!='#'){
    if(!stackLen(s))
        push(&s,c);
    else
    {pop(&s,&e);
    if(!match(e,c)){
        push(&s,e);
        push(&s,c);
    }
    }
    scanf("%c",&c);
}
if(!stackLen(s)) printf("the branchets are matched/n");
else printf("the branchets are matched/n");
getche();
}


      将s->stack改为s->base 程序打错了, 可是还是那个结果,不能运行,不知道怎么初始化才对?
2011-11-06 10:58
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:0 
回复 7楼 qizhongshun
typedf->typedef;还有那个分号你还是没加上,能细心点吗?

总有那身价贱的人给作业贴回复完整的代码
2011-11-06 11:34
樾宝
Rank: 3Rank: 3
来 自:常德
等 级:论坛游侠
帖 子:72
专家分:147
注 册:2011-8-19
收藏
得分:3 
回复 8楼 embed_xuel
8楼的,你什么时候不会出点错啊?
怎么能哪样说人家。
人家也不是故意的啦!
2011-11-06 11:38
qizhongshun
Rank: 2
等 级:论坛游民
威 望:1
帖 子:31
专家分:26
注 册:2011-9-16
收藏
得分:0 
哦哦 我太粗心了。。
2011-11-06 11:41
快速回复:求括号的匹配,求结果?
数据加载中...
 
   



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

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