测试环境:VS2010
广义表是一种非线性的结构,是线性表的一种扩展,是有n个元素组成有限序列。
广义表的定义是递归的,因为在表的描述中又得到了表,允许表中有表。
eg:
<1> A = ()
<2> B = (a,b)
<3> C = (a,b,(c,d))
<4> D = (a,b,(c,d),(e,(f),h))
<5> E = (((),()))
存储结构:
代码实现:
#include <iostream>
#include <Cassert>
using namespace std;
enum TYPE
{
HEAD, //头类型
VALUE, //值类型
SUB, //子表类型
};
typedef struct GeneralListNode
{
GeneralListNode(TYPE type,const char str = 0)//创建节点
:_type(type)
,_next(NULL)
{
if (type == HEAD || type == VALUE)
{
_value = str;
}
else if (type == SUB)
{
_sublink = NULL;
}
else
{
assert(false);
}
}
TYPE _t