数据结构之广义表

本文探讨了广义表这一非线性数据结构,它是线性表的扩展,允许表中有表。广义表的深度计算是所有子表深度的最大值,而非简单计数括号。在实现广义表时,使用共用体来表示数据项和子表项,并包含指向下一个结点的指针域。提供了`GeneralList.h`和`test.cpp`的程序源代码以供参考,展示了运行结果。
摘要由CSDN通过智能技术生成

 广义表>

     广义表是非线性的结构,是线性表的一种扩展,是有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
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值