第9周—项目4(2)广义表的原子统计

问题描述及代码:

/*   
*烟台大学计控学院    
*作    者:杨征   
*完成日期:2015年11月1日
*问题描述:设计算法,求出给定广义表g中的原子个数和最大原子
*/

(1)glist.h

typedef char ElemType;
typedef struct lnode
{
    int tag;                    //节点类型标识
    union
    {
        ElemType data;          //原子值
        struct lnode *sublist;  //指向子表的指针
    } val;
    struct lnode *link;         //指向下一个元素
} GLNode;                       //广义表节点类型定义

int GLLength(GLNode *g);        //求广义表g的长度
int GLDepth(GLNode *g);     //求广义表g的深度
GLNode *CreateGL(char *&s);     //返回由括号表示法表示s的广义表链式存储结构
void DispGL(GLNode *g);                 //输出广义表
int atomnum(GLNode *g);  //求广义表g中的原子个数
ElemType maxatom(GLNode *g);            //求广义表g中最大原子

(2)glist.cpp

typedef char ElemType;
typedef struct lnode
{
    int tag;                    //节点类型标识
    union
    {
        ElemType data;          //原子值
        struct lnode *sublist;  //指向子表的指针
    } val;
    struct lnode *link;         //指向下一个元素
} GLNode;                       //广义表节点类型定义

int GLLength(GLNode *g);        //求广义表g的长度
int GLDepth(GLNode *g);     //求广义表g的深度
GLNode *CreateGL(char *&s);     //返回由括号表示法表示s的广义表链式存储结构
void DispGL(GLNode *g);                 //输出广义表
int atomnum(GLNode *g);  //求广义表g中的原子个数
ElemType maxatom(GLNode *g);            //求广义表g中最大原子

(3)main.cpp

#include<stdio.h>
#include"glist.h"
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;
}

运行结果:

第9周—项目4(2)广义表的原子统计_第1张图片

知识点总结:

广义表的基本运算

你可能感兴趣的:(第9周—项目4(2)广义表的原子统计)