数据结构实践——广义表的原子统计-阿里云开发者社区

开发者社区> 人工智能> 正文
登录阅读全文

数据结构实践——广义表的原子统计

简介: 本文针对数据结构基础系列网络课程(5):数组与广义表的实践项目。 【项目 -广义表的原子统计】 设计算法,求出给定广义表g中的原子个数和最大原子 [参考解答] (头文件glist.h是广义表算法库建设的成果,见链接…) #include <stdio.h> #include "glist.h" int atomnum(GLNode *g) //求广义表

本文针对数据结构基础系列网络课程(5):数组与广义表的实践项目。

【项目 -广义表的原子统计】
设计算法,求出给定广义表g中的原子个数和最大原子

[参考解答] (头文件glist.h是广义表算法库建设的成果,见链接…

#include <stdio.h>
#include "glist.h"

int atomnum(GLNode *g)  //求广义表g中的原子个数
{
    if (g!=NULL)
    {
        if (g->tag==0)
            return 1+atomnum(g->link);
        else
            return atomnum(g->val.sublist)+atomnum(g->link);
    }
    else
        return 0;
}

ElemType maxatom(GLNode *g)             //求广义表g中最大原子
{
    ElemType max1,max2;
    if (g!=NULL)
    {
        if (g->tag==0)
        {
            max1=maxatom(g->link);
            return(g->val.data>max1?g->val.data:max1);
        }
        else
        {
            max1=maxatom(g->val.sublist);
            max2=maxatom(g->link);
            return(max1>max2?max1:max2);
        }
    }
    else
        return 0;
}

int main()
{
    GLNode *g;
    char *s="(b,(b,a,(#),d),((a,b),c((#))))";
    g = CreateGL(s);
    DispGL(g);
    printf("\n");
    printf("原子个数 :%d\n", atomnum(g));
    printf("最大原子 :%c\n", maxatom(g));
    return 0;
}

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享: