数据结构之广义表模拟

本文介绍广义表这一非线性数据结构,它由n个元素组成,可以包含子表。通过递归定义,允许表内存在其他表。文章提供了几个广义表的示例,并探讨了其存储结构,接着展示了一个C++实现广义表的代码示例。
摘要由CSDN通过智能技术生成

测试环境: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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值