急急!!请教大家一个简单而有似乎不容易发现的问题,有谁能帮我解释下这个错误在哪里?

MZJCDD 2008-11-21 10:36:41
////------------头文件-----------------
#include <iostream>
using namespace std;
//------------广义表的头尾链表存储表示--------------
typedef enum{ATOM,LIST}Elemtag;//ATOM==0;原子,LIST==1;子表
typedef struct Glonde
{
Elemtag tag;//公共部分,区分原子结点和表结点
union
{
char atom;//atom是原子结点的值域,(char)由用户定义
struct
{
struct Glonde *hp,*tp;
}ptr;//ptr是表结点的指针域,ptr.hp和ptr.tp分别指向表头和表尾


}a;//只有定义了变量才能对它进行用
}*Glist;//广义表类型
Glonde * Creatglist(char * &s)
{//返回指向广义表类型的指针
//用s所指向的字符串表示广义表
Glist p1,p2;
char ch;
s++;
ch=*s;
if(ch!=')')
{
p1=(Glist)malloc(Glonde);//创建一个结点
p1->tag=LIST;//用于表示表结点
if(ch=='(')
{
p2=(Glist)malloc(Glonde);//创建一个结点
p2->tag=LIST;
p1->a.ptr.hp=p2;
}
else
{
p2=(Glist)malloc(Glonde);//创建一个结点
p2->tag=ATOM;
p2->a.atom=ch;
p1->a.ptr.tp=p2;

}
}//if(ch!=')')
s++;
ch=*s;
if(ch=='\0')
{
p1->a.ptr.tp=NULL;
}
else//if(ch==',')
Creatglist(s);
return p1;
}
void Showglist(Glist p)
{
if(p==NULL)
{
cout<<"此广义表为:"
<<"( )"<<endl;
}
else
{
cout<<"此广义表为:"<<"(";
if(p->a.ptr.hp->tag==LIST)
cout<<"(";
else
cout<<p->a.atom;
if(p->a.ptr.tp==NULL)
cout<<")";
else
cout<<",";
}
}
//------------------源文件------------
#include "guangyibiao.h"
#include <iostream>
using namespace std;
void main()
{
char *s;
Glist p;
s="(a.(b,c))";
p=Creatglist(s);
Showglist(p);
}



请问大家我在调试的时候总是报这样的错误
error C2275: “Glonde”: 将此类型用作表达式非法
参见“Glonde”的声明
...全文
73 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
MZJCDD 2008-11-22
  • 打赏
  • 举报
回复
哦 谢谢你们 是我粗心了
Zark 2008-11-21
  • 打赏
  • 举报
回复
不是调试期间的错误吧?应该是编译期间的错误,把
p1=(Glist)malloc(Glonde);//创建一个结点
改为
p1=(Glist)malloc(sizeof(Glonde));//创建一个结点
就呆在云上 2008-11-21
  • 打赏
  • 举报
回复
我做成了一个文件,没有问题了
你的malloc的参数传入有问题,看我的:
#include <iostream> 
using namespace std;
//------------广义表的头尾链表存储表示--------------
typedef enum{ATOM,LIST}Elemtag;//ATOM==0;原子,LIST==1;子表
typedef struct Glonde
{
Elemtag tag;//公共部分,区分原子结点和表结点
union a
{
char atom;//atom是原子结点的值域,(char)由用户定义
struct
{
struct Glonde *hp,*tp;
}ptr;//ptr是表结点的指针域,ptr.hp和ptr.tp分别指向表头和表尾


}a;//只有定义了变量才能对它进行用
}*Glist;//广义表类型
Glonde * Creatglist(char * &s)
{//返回指向广义表类型的指针
//用s所指向的字符串表示广义表
Glist p1,p2;
char ch;
s++;
ch=*s;
if(ch!=')')
{
p1=(Glist)malloc(sizeof(Glonde));//创建一个结点
p1->tag=LIST;//用于表示表结点
if(ch=='(')
{
p2=(Glist)malloc(sizeof(Glonde));//创建一个结点
p2->tag=LIST;
p1->a.ptr.hp=p2;
}
else
{
p2=(Glist)malloc(sizeof(Glonde));//创建一个结点
p2->tag=ATOM;
p2->a.atom=ch;
p1->a.ptr.tp=p2;

}
}//if(ch!=')')
s++;
ch=*s;
if(ch=='\0')
{
p1->a.ptr.tp=NULL;
}
else//if(ch==',')
Creatglist(s);
return p1;
}
void Showglist(Glist p)
{
if(p==NULL)
{
cout <<"此广义表为:"
<<"( )" <<endl;
}
else
{
cout <<"此广义表为:" <<"(";
if(p->a.ptr.hp->tag==LIST)
cout <<"(";
else
cout <<p->a.atom;
if(p->a.ptr.tp==NULL)
cout <<")";
else
cout <<",";
}
}

void main()
{
char *s;
Glist p;
s="(a.(b,c))";
p=Creatglist(s);
Showglist(p);
}
ma100 2008-11-21
  • 打赏
  • 举报
回复
p1=(Glist)malloc(Glonde);
是什么意思,malloc后面跟数字啊

70,023

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧