构建一张广义表,计算广义表的长度和深度。
/*
*广义表的实现*
1.构建广义表
形如(a,d,(e,(w,c),(),(r,t)),(((q))));其中空表表示为(),括弧中不添加任何字符
2.求广义表长度
3.广义表深度
*/
#include<iostream>
#include<string>
#include<fstream>
using namespace std;
//构建广义表数据节点
class GLNode
{
public:
int tag;//设置标志位,判断是否存在子表
//定义共用体,当前是否存储数据与是否需生成子表不并存
union
{
char data;//存储数据
class GLNode *sub_list;//子表指针
}val;
class GLNode *link;//后继节点指针
};
//广义表的实现
class GList
{
public:
GList(){}
~GList()
{
release(G);
}
//构建广义表,形参name为文件名
void Create(string name)
{
read.open(name);
getline(read, str);//读取一行字符
read.close();
cout << str << endl;
G = CreateGL(G, str);//构建广义表
}
//求广义表长度
int length()
{
int n = get_length(G->val.sub_list);
return n;
}
//求广义表深度
int deep()
{
int n = get_deep(G);