全部博文(556)
分类: C/C++
2011-06-27 09:25:53
【问题描述】
在高校中,为了丰富学生的业余生活,在学校的帮助下,会成立许多社团,少则几个,多则几十个。为了有效的管理这些社团,要求编写程序实现以下功能:
【问题分析】
社团管理部门、社团和社团成员之间构成了完整的一棵树,如图一。因此,可以把它作为树的问题来解决。由于树结构比较复杂,不利于求解,先把树转换成二叉树。因此,高校社团管理就转换为对二叉树操作的问题。
在这棵二叉树中,结点类型是不同的,有社团结点,有成员结点。为了便于操作,特设置一个标识域type用于区分结点类型。
(a) 树
(b)二叉树
图1 社团和成员构成的树
【问题实现】
1.数据结构
(a)定义结点[封装数据信息]
typedef struct Info{
int type; /*类型,0为社团,1为社团成员 */
char tname[20]; /*名称或姓名*/
char data[11]; /*成立日期或出生日期*/
char phone[11]; /*联系电话*/
char duty[10]; /* 职务*/
}datatype;
(b)描述二叉树的二叉链表存储结构
typedef struct bitnode
{
datatype data; /*数据域*/
struct bitnode *lchild,*rchild; /*左右孩子指针*/
}BiTNode,*PBiTNode,*BiTree;
2.操作实现
(1)根据类型和名称查找结点
参考资料
1.《数据结构实例教程》 杨晓光