第九週実践項目4—広義表算法庫及び応用(2)

1592 ワード

/* 
Copyright (c)2015,               
All rights reserved. 
    :  4-2.cbp 
      :    
    :2015 11 14  
     :v1.0 
 
    :(1)      ,       g      。 
          (2)      ,       g      。 
    :  
    :     
*/  

ヘッダファイルコードは【一般化テーブルアルゴリズムライブラリ及び応用(1)】を参照する.
コード:
#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; }
<img src="http://img.blog.csdn.net/20151115190442521" alt="" />