第九周上机实践项目4——广义表算法库及应用(2、3)
2015-10-30 08:54
393 查看
问题及代码:
头文件:glist.h,包含定义广义表数据结构的代码、宏定义、要实现算法的函数的声明;
/* *Copyright(c)2015,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:test.cpp *作者:颜肖璇 *完成日期:2015年10月30日 *版本号:v1.0 /* *问题描述:设计一个算法,求出给定广义表g中的原子个数和最大原子。 *输入描述: *程序输出: */ #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("\n"); printf("原子个数 :%d\n", atomnum(g)); printf("最大原子 :%c\n", maxatom(g)); return 0; }
头文件:glist.h,包含定义广义表数据结构的代码、宏定义、要实现算法的函数的声明;
#ifndef GLIST_H_INCLUDED #define GLIST_H_INCLUDED 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); //输出广义表g #endif // GLIST_H_INCLUDED 运行结果:
相关文章推荐
- OC 的消息转发机制 (新博客 很久不更新啊 忙着找工作)
- iOS 第三方使用常规流程
- 元程序 /如何取test.py中name的值
- 第九周 项目3-稀疏矩阵的三元组表示的实现及应用
- netbeans打开UTF文件,提示无法使用
- java制作广告图片自动轮播控件
- 第六周项目2——建立链栈算法库
- Notepad 自动补全的插件 安装 (包括html,JavaScript)
- 第九周-项目1-猴子选大王
- 第九周 项目二(2) 对称矩阵压缩存储的实现与应用
- 听我说说我的博客: 月访问量过万的个人IT博客的技术史
- 第九周项目2-对称矩阵压缩存储的实现与应用(2)
- 在MapReduce中利用MultipleOutputs输出多个文件
- Android框架集合
- mysql日期函数互转
- 一些技巧吧!Unity Tips(日常使用)
- Android中可以做的两件坏事---破解锁屏密码和获取Wifi密码
- 第9周、项目2(3)—对称矩阵的压缩存储的实现与运用
- Number Sequence
- EA Sports reveal price range and transfer market changes