广义表的基础理解请参考 广义表的理解
现给出代码和讲解
#include<stdio.h>
#include<malloc.h>
#define MAXNUM 100 // 输入串的最大长度
char s[MAXNUM];//记录输入串
int index = 0;
int level = 0;//记录当前层数
int maxLevel = 0;//记录最大层数
typedef struct node//原子结点和表结点的存储
{
int tag;
union
{
char data;
struct node* head;
};
struct node* next;
} Node;
Node* setList(); //递归创建一个表
Node* setElement() //用于递归过程中判断当前需要创建原子结点还是表结点
{
Node* h = NULL;
if(s[index] == '(')//发现 ’(’ 说明是一个子表
{
h = setList(); // 返回一个子表
}
else if(s[index] == ')') //只有遇见类似’ ( ) ’的结构时才会走到这一步,使表结点的head指向NULL,(对照setList()函数)
{
index++;
h = NULL;
}
else//原子结点
{
h = (Node*)malloc(sizeof(Node));
h -> tag = 0;
h -> data = s[index];
index++;
}
r

本文介绍了广义表的基础知识,并通过代码详细讲解如何创建广义表,输出广义表以及如何求广义表的深度。重点在于理解和应用递归方法处理原子节点和表节点。
最低0.47元/天 解锁文章
2506

被折叠的 条评论
为什么被折叠?



