假设某专业有若干个班,每个班有若干学生,每个学生包含姓名和分数,这样构成一棵树,如图1所示。假设树中每个结点的name域均不相同,该树采用孩子兄弟链存储结构,其结点类型定义如下:
假设某专业有若干个班,每个班有若干学生,每个学生包含姓名和分数,这样构成一棵树,如图1所示。假设树中每个结点的name域均不相同,该树采用孩子兄弟链存储结构,其结点类型定义如下:
typedef struct node
{ char name[50]; //专业、班号或姓名
float score; //分数
struct node *child; //指向最左边的孩子结点
struct node *brother; //指向下一个兄弟结点
} TNode;
完成以下算法:
(1)设计一个算法求所有的学生人数。
(2)求指定某班的平均分。
解:(1)算法如下:
int Count(TNode *b)
{if (b==NULL) return 0;if (b->child==NULL) return 1;return count(b->child)+count(b->brother);
}
说明:本题可以从链表的角度求解。
(2)算法如下:
int Average(TNode *b,char class[],float &avg)
{int n=0;float sum=0;TNode *p=b->child; //p指向班号结点while (p!=NULL && strcmp(p->name,class)!=0)p=p->brother;if (p==NULL) return 0; //没找到该班号,返回0p=p->child; //p指向该班的第一个学生while (p!=NULL){n++; //累计人数sum+=p->score; //累计分数p=p->brother;}avg=sum/n; //求平均分return 1;
}
假设某专业有若干个班,每个班有若干学生,每个学生包含姓名和分数,这样构成一棵树,如图1所示。假设树中每个结点的name域均不相同,该树采用孩子兄弟链存储结构,其结点类型定义如下:相关推荐
- 假设二叉树采用二叉链存储结构,编写一个算法,求出二叉树中的叶子结点数,并设计主函数调用上述算法。
假设二叉树采用二叉链存储结构,编写一个算法,求出二叉树中的叶子结点数,并设计主函数调用上述算法. #include<iostream>//蓝多多算法实验五:二叉树的应用(二) #inclu ...
- 采用孩子兄弟表示法建立一棵树
采用孩子兄弟表示法建立一棵树. 说明:因为孩子兄弟表示法的特点,不好用递归创建,所以利用队列来存放结构体. 注意:当指针作为函数参数时,不能改变实参指针的指向,只能改变实参指针所指向的数据 #incl ...
- c语言孩子兄弟法存储一棵树,数据结构(C语言版)---树
1.树:n个结点的有限集,n=0时为空树. 1)特点: (1)有且仅有一个特定的称为根的结点. (2)有若干个互不相交的子树,这些子树本身也是一棵树. (3)树的根结点没有前驱结点,除根结点外的所有结 ...
- 设树采用孩子兄弟表示法存放.用类c语言设计算法计算树的高度.,(数据结构课程设计分类题目.doc...
(数据结构课程设计分类题目 线性表 顺序表: 1.设有一元素为整数的线性表L=(a1,a2,a3,-,an),存放在一维数组A[N]中,设计一个算法,以表中an作为参考元素,将该表分为左.右两部分,其 ...
- c语言孩子兄弟法存储一棵树,树的孩子兄弟表示法
前面讲解了存储普通树的双亲表示法和孩子表示法,本节来讲解最后一种常用方法--孩子兄弟表示法. 图 1 普通树示意图 树结构中,位于同一层的节点之间互为兄弟节点.例如,图 1 的普通树中,节点 A.B ...
- 创建孩子兄弟链表的树c语言,树的孩子兄弟链表实现
树的孩子兄弟链表存储结构,采用两条链分别连接孩子和兄弟结点.其中,child指向该结点的第一个孩子结点,sibling指向该结点的下一个兄弟结点. public class Tree { privat ...
- 《大话数据结构》6、7树、图
第6章树 149 树: 树 (Tree) 是 n (n>=0) 个结点的有限集 . n=0 时称为空树. 在任意一棵非空 树中: ( 1 ) 有旦仅有一个特定的称为根 (Root) 的结点: ( ...
- 数据结构练习题之树和图(附答案与解析)
树 (1)把一棵树转换为二叉树后,这棵二叉树的形态是( ). A.唯一的 B.有多种 C.有多种,但根结点都没有左孩子 D.有多种,但根结点 ...
- 数据结构与算法一览(树、图、排序算法、搜索算法等)- Review
算法基础简介 - OI Wiki (oi-wiki.org) 文章目录 1. 数据结构介绍 1.1 什么是数据结构 1.2 数据结构分类 2. 链表.栈.队列:略 3. 哈希表:略 4. 树 4.1 ...
最新文章
- 沈阳初步建成国内领先的城市级大数据资源库
- 北京阿里云ACE态势感知大屏体验黑客攻击与防御
- Mac技巧之查看苹果电脑 Mac OS X 系统是否开启 64 位运算,以及设置 32/64 位模式的方法
- php7 pdo mysql_PHP7添加pdo_mysql扩展
- 服务端负载均衡和客户端负载均衡
- 回顾2009,展望2010
- CISC, RISC 探究
- vivado 亚稳态_VIVADO时序约束及STA基础
- 汇编语言-学习笔记(一)
- Eclipse 编译C++
- Ra2辅助制作(1)
- QComboBox下拉框样式
- 子列和列_最大子列和的四种算法总结
- ubuntu 开机后 按键 鼠标不能用
- 半圆形进度条(html)
- 关于DrawText的基准线纵坐标的计算
- /home/wxl/jdk1.8.0_91/jre/lib/i386/libawt_xawt.so: libXext.so.6: cannot open shared object file: No
- NLP进阶,使用TextRNN和TextRNN_ATT实现文本分类
- js 自由变换图片尺寸
- 如何用命令启用计算机用户,win10启用administrator账户的步骤_如何在win10下启用administrator用户...
热门文章
- Xmind 8 pro 软件破解版(经济条件允许的情况下,请支持正版)
- 电路图中的那些类似于箭头的是什么意思?
- 【6Dof位姿估计】DPVL:6DoF Object Pose Estimation via Differentiable Proxy Voting Loss论文理解
- 华为云-实时流计算服务CS
- 互联网金融公司在信贷风险管理方面,主要面临哪些挑战
- 微信HOOK 删除好友
- MOSFET 导通条件(转)
- 一经度是多少公里?一纬度是多少公里
- Webots 机器人仿真平台(一) 系统安装
- Python | 使用Python爬取Wallhaven网站壁纸并上传百度网盘