假设某专业有若干个班,每个班有若干学生,每个学生包含姓名和分数,这样构成一棵树,如图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域均不相同,该树采用孩子兄弟链存储结构,其结点类型定义如下:相关推荐

  1. 假设二叉树采用二叉链存储结构,编写一个算法,求出二叉树中的叶子结点数,并设计主函数调用上述算法。

    假设二叉树采用二叉链存储结构,编写一个算法,求出二叉树中的叶子结点数,并设计主函数调用上述算法. #include<iostream>//蓝多多算法实验五:二叉树的应用(二) #inclu ...

  2. 采用孩子兄弟表示法建立一棵树

    采用孩子兄弟表示法建立一棵树. 说明:因为孩子兄弟表示法的特点,不好用递归创建,所以利用队列来存放结构体. 注意:当指针作为函数参数时,不能改变实参指针的指向,只能改变实参指针所指向的数据 #incl ...

  3. c语言孩子兄弟法存储一棵树,数据结构(C语言版)---树

    1.树:n个结点的有限集,n=0时为空树. 1)特点: (1)有且仅有一个特定的称为根的结点. (2)有若干个互不相交的子树,这些子树本身也是一棵树. (3)树的根结点没有前驱结点,除根结点外的所有结 ...

  4. 设树采用孩子兄弟表示法存放.用类c语言设计算法计算树的高度.,(数据结构课程设计分类题目.doc...

    (数据结构课程设计分类题目 线性表 顺序表: 1.设有一元素为整数的线性表L=(a1,a2,a3,-,an),存放在一维数组A[N]中,设计一个算法,以表中an作为参考元素,将该表分为左.右两部分,其 ...

  5. c语言孩子兄弟法存储一棵树,树的孩子兄弟表示法

    前面讲解了存储普通树的双亲表示法和孩子表示法,本节来讲解最后一种常用方法--孩子兄弟表示法. 图 1 普通树示意图 树结构中,位于同一层的节点之间互为兄弟节点.例如,图 1 的普通树中,节点 A.B ...

  6. 创建孩子兄弟链表的树c语言,树的孩子兄弟链表实现

    树的孩子兄弟链表存储结构,采用两条链分别连接孩子和兄弟结点.其中,child指向该结点的第一个孩子结点,sibling指向该结点的下一个兄弟结点. public class Tree { privat ...

  7. 《大话数据结构》6、7树、图

    第6章树 149 树: 树 (Tree) 是 n (n>=0) 个结点的有限集 . n=0 时称为空树. 在任意一棵非空 树中: ( 1 ) 有旦仅有一个特定的称为根 (Root) 的结点: ( ...

  8. 数据结构练习题之树和图(附答案与解析)

    树 (1)把一棵树转换为二叉树后,这棵二叉树的形态是(   ). A.唯一的                          B.有多种 C.有多种,但根结点都没有左孩子    D.有多种,但根结点 ...

  9. 数据结构与算法一览(树、图、排序算法、搜索算法等)- Review

    算法基础简介 - OI Wiki (oi-wiki.org) 文章目录 1. 数据结构介绍 1.1 什么是数据结构 1.2 数据结构分类 2. 链表.栈.队列:略 3. 哈希表:略 4. 树 4.1 ...

最新文章

  1. 沈阳初步建成国内领先的城市级大数据资源库
  2. 北京阿里云ACE态势感知大屏体验黑客攻击与防御
  3. Mac技巧之查看苹果电脑 Mac OS X 系统是否开启 64 位运算,以及设置 32/64 位模式的方法
  4. php7 pdo mysql_PHP7添加pdo_mysql扩展
  5. 服务端负载均衡和客户端负载均衡
  6. 回顾2009,展望2010
  7. CISC, RISC 探究
  8. vivado 亚稳态_VIVADO时序约束及STA基础
  9. 汇编语言-学习笔记(一)
  10. Eclipse 编译C++
  11. Ra2辅助制作(1)
  12. QComboBox下拉框样式
  13. 子列和列_最大子列和的四种算法总结
  14. ubuntu 开机后 按键 鼠标不能用
  15. 半圆形进度条(html)
  16. 关于DrawText的基准线纵坐标的计算
  17. /home/wxl/jdk1.8.0_91/jre/lib/i386/libawt_xawt.so: libXext.so.6: cannot open shared object file: No
  18. NLP进阶,使用TextRNN和TextRNN_ATT实现文本分类
  19. js 自由变换图片尺寸
  20. 如何用命令启用计算机用户,win10启用administrator账户的步骤_如何在win10下启用administrator用户...

热门文章

  1. Xmind 8 pro 软件破解版(经济条件允许的情况下,请支持正版)
  2. 电路图中的那些类似于箭头的是什么意思?
  3. 【6Dof位姿估计】DPVL:6DoF Object Pose Estimation via Differentiable Proxy Voting Loss论文理解
  4. 华为云-实时流计算服务CS
  5. 互联网金融公司在信贷风险管理方面,主要面临哪些挑战
  6. 微信HOOK 删除好友
  7. MOSFET 导通条件(转)
  8. 一经度是多少公里?一纬度是多少公里
  9. Webots 机器人仿真平台(一) 系统安装
  10. Python | 使用Python爬取Wallhaven网站壁纸并上传百度网盘