广义表的C程序
#include<stdio.h>#include<stdlib.h>
typedef enum{atom,list}nodeTag;
typedef struct node
{
nodeTag tag;
union
{
char data;
node *slink;
};
node *link;
}pNode,*pist;
void cre(pist &p)
{
char ch;
scanf("%c",&ch);
if(ch!=' ')
{
p=new pNode;
if(ch=='(')
cre(p->slink),p->tag=list;
else
p->tag=atom,p->data=ch;
}
else
p=NULL;
scanf("%c",&ch);
if(p!=NULL)
{
if(ch==',')
cre(p->link);
else
p->link=NULL;
}
}
void show(pist p)
{
if(p)
{
if(p->tag==list)
{
printf("(");
if(p->slink==NULL)
printf(" ");
else
show(p->slink);
}
else
printf("%c",p->data);
if(p->tag==list)
printf(")");
if(p->link!=NULL)
printf(","),show(p->link);
}
}
void main()
{
pist p;
cre(p);
show(p);
}
看不明白这道程序,大家帮忙分析下,谢谢!!