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

    xiaoxiao2026-04-07  5

    本文针对数据结构基础系列网络课程(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; }
    最新回复(0)