广义表>
广义表是非线性的结构,是线性表的一种扩展,是有n个元素组成的有限序列.
广义表的定义是递归的,因为在表的描述中又得到了表,允许表中有表.
eg:
(1).空表套空表((()))--深度为3
(2).未出现子表(a,b)--深度为1
(3).表中有表(a,b,(c,d))--深度为2
(4).多层子表的嵌套(a,b,(c,d),(e,(f),g))--深度3
(5).空表()--深度为1
在求一个广义表的深度的时候我们要求的深度是所有子表中的最大值而不是所有的以'('开头的表的总和.例如上述的实例(4),它的深度不是4而是3.
通过观察我们发现有三种类型-头结点类型,值类型和子表类型,在广义表的结点中下一个结点可能是值也可能是子表,并且只能是其中的一个所以用共用体来封装数据项和子表项,而且该广义表的结点成员中还必须存在指向下一个结点的指针域.
enum Type
{
HEAD, //头类型
VALUE, //值类型
SUB, //子表类型
};
struct GeneralNode
{
GeneralNode(Type type)
:_type(type)
,_next(NULL)
{}
GeneralNode(Type type,const char& value)
:_type(type)
,_next(NULL)
,_value(value)
{}
Typ