6-2 求广义表g的原子个数

#include "glist.cpp"

//解法1的方法
int Count1(GLNode *g)					//求广义表g的原子个数
{	int n=0;
	GLNode *g1=g->val.sublist;
	while (g1!=NULL)					//对每个元素进行循环处理
	{	if (g1->tag==0)					//为原子时
			n++;						//原子个数增1
		else							//为子表时
			n+=Count1(g1);				//累加元素的原子个数
		g1=g1->link;					//累加兄弟的原子个数
	}
	return n;							//返回总原子个数
}
//解法2的方法
int Count2(GLNode *g)					//求广义表g的原子个数
{	int n=0;
	if (g!=NULL)						//对每个元素进行循环处理
	{	if (g->tag==0)					//为原子时
			n++;						//原子个数增1
		else							//为子表时
			n+=Count2(g->val.sublist);	//累加元素的原子个数
		n+=Count2(g->link);				//累加兄弟的原子个数
	}
	return n;							//返回总原子个数
}

int main()
{
	GLNode *g;
	char *str="((a),b,(c,d))";
	g=CreateGL(str);
	DispGL(g);
	printf("\n");
	printf("解法1原子个数:%d\n",Count1(g));
	printf("解法2原子个数:%d\n",Count2(g));
	DestroyGL(g);
	return 1;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值