创建和输出广义表,这段程序错在哪里啊?
#include<iostream.h>
#include<stdlib.h>
typedef enum{atom,list}NodeTag;
typedef struct GLnode
{
NodeTag tag;
union
{
char data;
GLnode *slink;
};
GLnode *link;
};
void CreateGList(GLnode *GL)
{
char ch;
ch=cin.get();
GL=(GLnode *)malloc(sizeof(GLnode));
if(ch=='(')
{
GL->tag=list;
CreateGList(GL->slink);
}
else
{
GL->tag=atom;
GL->data=ch;
}
ch=cin.get();
if(ch==',')
CreateGList(GL->link);
else
GL->link=NULL;
}
void PrintGlist(GLnode *GL)
{
if(GL!=NULL)
{
if(GL->tag==list)
{
cout<<'(';
if(GL->slink==NULL)
cout<<" ";
else
PrintGlist(GL->slink);
}
else
cout<<GL->data;
if(GL->tag==list)
cout<<")";
if(GL->link!=NULL)
{
cout<<",";
PrintGlist(GL->link);
}
}
}
void main()
{
GLnode *GL;
CreateGList(GL);
PrintGlist(GL);
}
[此贴子已经被作者于2006-6-8 16:08:12编辑过]