データ構造の実践——一般化表の原子統計
3727 ワード
本稿では,データ構造基礎シリーズネットワークカリキュラム(5):配列と一般化テーブルの実践プロジェクトについて述べる.
【項目−一般化テーブルの原子統計】設計アルゴリズムは、所与の一般化テーブルgにおける原子個数と最大原子を求める
[参考解答](ヘッダファイルglist.hは広義の表算法庫建設の成果であり、リンクを参照...)
【項目−一般化テーブルの原子統計】設計アルゴリズムは、所与の一般化テーブル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("
");
printf(" :%d
", atomnum(g));
printf(" :%c
", maxatom(g));
return 0;
}