广义表求长度和深度C++

本文介绍如何使用C++编程实现广义表,并计算其长度和深度。通过对广义表结构的理解,利用递归方法进行操作,达到求解目标。
摘要由CSDN通过智能技术生成

构建一张广义表,计算广义表的长度和深度。

/*
			*广义表的实现*

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);
  • 5
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值