您的位置:首页 > 其它

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

2015-11-01 18:04 323 查看
问题描述及代码:

/*
*烟台大学计控学院
*作    者:杨征
*完成日期: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;
}

运行结果:



知识点总结:

广义表的基本运算
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: