大学数据统计

实验内容:

编写一个程序exp7-10实现大学的数据统计。某大学的组织结构如表7.2所示,该数据存放在文本文件abc.txt中。要求采用树的孩子链存储结构存储它,并完成以下功能:

  1. 从abc.txt文件读数据到数组R中 。
  2. 由数组R创建树t的孩子链存储结构。
  3. 采用括号表示法输出树t 。
  4. 求计算机学院的专业数。
  5. 求计算机学院的班数。

实验代码

#include<stdio.h>
#include<stdlib.h>
#define MaxSize 66
#include<malloc.h>
#include<string.h>
#define MaxSons 3
typedef char ElemType;
typedef struct node
{ElemType data[15];     //结点的值struct node *sons[MaxSons];    //指向孩子结点
}TSonNode;      //孩子链存储结构中的结点类型
typedef struct
{char N[15];char n[15];
}array;
//读取文件内容到数组R中
void ReadFile(array R[],FILE *fp,int &n)
{while((fscanf(fp,"%s",R[n].N))!=EOF&&(fscanf(fp,"%s",R[n].n))!=EOF)n++;
}
//创建一颗树
TSonNode *CreateTree(char str[],array R[],int n)
{TSonNode *t;int k,i=0,j=0;t=(TSonNode *)malloc(sizeof(TSonNode));strcpy(t->data,str);for(k=0;k<MaxSons;k++)t->sons[k]=NULL;while(i<n){if(strcmp(R[i].N,str)==0){t->sons[j]=CreateTree(R[i].n,R,n);j++;}i++;}return t;
}
//输出树(孩子链存储结构)
void DispTree(TSonNode *t)
{int i=0;if(t==NULL)printf("此树为空树!\n");else{printf("%s",t->data);if(t->sons[i]!=NULL)    //若t结点至少有一个孩子{printf("(");for(i=0;i<MaxSons;i++){DispTree(t->sons[i]);if(t->sons[i+1]!=NULL)printf(",");elsebreak;}printf(")");}}
}
//销毁树
void DestroyTree(TSonNode *t)
{if(t==NULL)printf("此树为空树!\n");else{for(int i=0;i<MaxSons;i++){if(t->sons[i]!=NULL)DestroyTree(t->sons[i]);elsebreak;}free(t);}
}
//查找某一结点
TSonNode *FindNode(TSonNode *t,char str[])
{TSonNode *p;if(t==NULL)return NULL;else{if(strcmp(t->data,str)==0)return t;else{for(int i=0;i<MaxSons;i++){if(t->sons[i]!=NULL){p=FindNode(t->sons[i],str);if(p!=NULL)return p;}}return NULL;}}
}
//求某一结点的孩子个数
int ChildCount(TSonNode *p)
{int count=0;for(int i=0;i<MaxSons;i++){if(p->sons[i]!=NULL)count++;elsebreak;}return count;
}
//求某棵树中的叶子结点数
//本例中,叶子结点数等于班级数,一个叶子结点对应一个班级
int LeafCount(TSonNode *p)
{int count=0;if(p==NULL)return 0;else{if(p->sons[0]==NULL)count++;else{for(int i=0;i<MaxSons;i++){if(p->sons[i]!=NULL)count=count+LeafCount(p->sons[i]);elsebreak;}}}return count;
}
//求某棵树的叶子结点值的和
int LeafSumOfvalue(TSonNode *p)
{int sum=0;if(p==NULL)return 0;else{if(p->sons[0]==NULL)return atoi(p->data);else{for(int i=0;i<MaxSons;i++){if(p->sons[i]!=NULL)sum+=LeafSumOfvalue(p->sons[i]);elsebreak;}}}return sum;
}int main()
{int n=0;TSonNode *t;array R[MaxSize];FILE *fp;if((fp=fopen("abc1.txt","r"))==NULL)      //以只读方式打开table.txt文件{printf("error!cannot open the file!");exit(1);}printf("读取文件内容存入数组R中\n");ReadFile(R,fp,n);printf("输出数组R:\n");for(int i=0;i<n;i++)printf("%s %s\n",R[i].N,R[i].n);  //输出R数组查看是否读取正确printf("\n由数组R创建树T,");t=CreateTree(R[0].N,R,n);   //创建一颗树printf("由括号表示输出树T:\n");DispTree(t);char str[10];printf("\n请输入学院名:");scanf("%s",str);printf("\n%s的专业数:%d\n",str,ChildCount(FindNode(t,str)));printf("%s的班级数:%d\n",str,LeafCount(FindNode(t,str)));printf("\n请输入学院名:");scanf("%s",str);printf("\n%s的学生数:%d\n",str,LeafSumOfvalue(FindNode(t,str)));printf("%s的班级数:%d\n",str,LeafCount(FindNode(t,str)));printf("销毁树!\n");DestroyTree(t);return 0;
}

实验结果:

实验数据

中华大学 计算机学院
中华大学    电信学院
计算机学院   计算机科学
计算机学院   信息安全
计算机学院   物联网
计算机科学   计科1班
计算机科学   计科2班
计算机科学   计科3班
计科1班        32
计科2班        35
计科3班        33
信息安全    信安1班
信息安全    信安2班
信安1班        36
信安2班        38
物联网     物联班
物联班     38
电信学院    电子信息类
电信学院    信息工程
电子信息类   电信1班
电子信息类   电信2班
电子信息类   电信3班
电信1班        40
电信2班        38
电信3班        42
信息工程    信息1班
信息工程    信息2班
信息1班        38
信息2班        35

注意事项

发行打开abc.txt 文件,出现乱码,但是代码中文件没有乱码,所以应该是编码错误。

参考文章:

原文链接:https://blog.csdn.net/m0_46669582/article/details/111564928

数据结构实验_大学数据统计相关推荐

  1. CNZZ 移动统计_移动数据统计_移动应用分析_ APP统计

    CNZZ 移动统计_移动数据统计_移动应用分析_ APP统计 http://mobile.cnzz.com/help.php?h=Android_SDK_Download_and_Usage_Manu ...

  2. delhpi7 tcombobox清楚重复项_专利数据统计中需要搞清楚的首要问题(2)

    上一篇专利数据统计中需要搞清楚的首要问题(1)介绍了通过合并申请号避免重复统计,理清了专利篇数和专利件数的问题,那么还有一类统计就是对发明项数的统计,这里就涉及到对同一项发明的重复统计问题.上一篇介绍 ...

  3. 学术前沿趋势分析_学习_论文数据统计Task1

    论文数据统计学习记录 任务说明 分析说明 1. 获得方法:**==使用python 爬虫爬取数据集==** 2. 这里**==使用正则化加以限制==** 3. 判断数据是否存在 4. json文件的设 ...

  4. 【swjtu】数据结构实验_二叉树的字符图形显示程序(半期)

    实验内容及要求: 设二叉树采用二叉链表存储结构,结点数据域为字符类型.编写控制台应用程序采用先序遍历法建立二叉树存储结构并实现二叉树的字符图形显示.输入及输出示例如下: 输入: ABDH##I##EJ ...

  5. 哈工大大数据实验_大数据创新实验室丨警大智慧警务学院人才培养打造新引擎...

    2020年11月13日,警察大学智慧警务学院与江苏省南通市通州区公安局签署了<大数据创新运用联合开发实验室合作框架协议>.智慧警务学院党委书记王连鹏,南通市通州区副区长.公安局局长杨彬,南 ...

  6. spotify 数据分析_没有数据? 没问题! 如何从Wikipedia和Spotify收集重金属数据

    spotify 数据分析 For many data science students, collecting data is seen as a solved problem. It's just ...

  7. 自考数据结构和数据结构导论_我跳过大学自学数据科学

    自考数据结构和数据结构导论 A few months back, I decided I wanted to learn data science. In order to do this, I sk ...

  8. 数据结构:大学的数据统计

    实验:大学的数据统计(树的应用) 一.问题描述: 1.实验目的 掌握树的逻辑结构和存储结构,熟练使用树遍历算法进行问题的求解. 2.实验内容 问题描述 1.编写文件tree.h,实现树的孩子链存储结构 ...

  9. 科大奥锐干涉法测微小量实验的数据_大学物理实验报告答案解析大全(实验数据).doc...

    HYPERLINK "/source/2123275" 大 HYPERLINK "/source/2123275" 学物理实验报告答案大全(实验数据及思考题答案 ...

最新文章

  1. pandas把dataframe的数据列转化为索引列实战:单列转化为索引、多列转化为复合索引
  2. 前端JS调用微信扫一扫二维码
  3. Php 表单转json,form转json实现方法
  4. Web环境从Apache转Nginx后页面报404错误
  5. 横瓜执导众程序员开展大讨论关于C、JAVA及其它主流IT技术使用情况和优点缺点。...
  6. VTK:可视化之CaptionActor2D
  7. 汇编排序知识之冒泡排序
  8. datapumpdir oracle_oracle_datapump创建外部表案例
  9. 解决linux下QtCreator无法输入中文的情况
  10. TVM:在树莓派上部署预训练的模型
  11. python直接连接oracle_python连接oracle
  12. python-函数的参数-位置参数-关键词参数
  13. 面向科研的推荐系统Benchmark诞生!
  14. 全球AI人才只有2万多,仅3000人在求职 | 报告
  15. .NET常用类库--苏飞合集
  16. cpuz测试分数天梯图_2015最新cpu天梯图 cpu性能排行榜
  17. okcc呼叫中心外呼系统小白的使用教程
  18. 去马赛克的频域方法(可抗混叠)
  19. 记一些Linux/centos的基础运维命令
  20. Matplotlib、PIL Image如何将多张图片整合保存为一张图片

热门文章

  1. PGP密钥对生成和应用
  2. HIS(LIS、PACS、RIS、EMR)系统解决方案
  3. netstat -tlun
  4. 07_plantform平台总线
  5. 利用Python3.x 删除字符串中的特殊字符——即ASCII控制字符
  6. android 动画 图片从指定位置飞到指定位置
  7. 2021年流动式起重机司机新版试题及流动式起重机司机试题及解析
  8. 基于QT的客户管理系统CRM
  9. PyCharm新建脚本开头模板设置
  10. 用户需求说明书-模板(referrence)