急急!!请教大家一个简单而有似乎不容易发现的问题,有谁能帮我解释下这个错误在哪里?
////------------头文件-----------------
#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”的声明
#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”的声明
...全文


