#include <stdio.h> #include <stdlib.h> typedef struct Node { int A_L;//使用枚举不熟练,A_T代表Atom或List,0为Atom,1为List Node *before;//额外创建一个指针指向之前 Node *tail; union { Node *down; char data; }; }Node; void CreatLists (Node *pre) { //初始化后创建一个广义表 char s,ss=0; Node *cur;//一下分别讨论字符串中出现各种字符的情况 if ((s=getchar())==',') { ss=s; s=getchar(); } if (s>='a'&&s<='z')//如果是字母的情况 { cur =(Node *)malloc (sizeof(Node)); if (ss==',') { pre->tail=cur; } else { pre->down=cur; } cur->before=pre; cur->data=s; cur->tail=NULL; cur->A_L=1; CreatLists (cur); } else { if (s=='(')//如果是左括号 { cur =(Node *)malloc (sizeof(Node)); if (ss==