问题描述及代码
/*
*烟台大学计控学院
*作 者:张雯婧
*完成日期:2016年10月24日
*问题描述:设计算法,求出给定广义表g中的原子个数和最大原子
*/
glish.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中最大原子
glish.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中最大原子
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;
}
运行结果
知识点总结:
广义表的基本运算