资源简介
该程序用c++语言编写,主要用到数据结构中的二叉树,做的职工管理系统,主要用于其创建,查找,删除,添加等
代码片段和文件信息
#include
#include
#include
#include
#include
#include
#define LH 1//左高
#define EH 0//等高
#define RH -1//右高
#define FALSE 0
#define TRUE 1
#define OK 1
#define ERROR 0
#define MAXSIZE 20
char filename[30];
FILE *fp;
typedef struct{
int number;
char name[10];
float wage;
int age;
}worker;
typedef struct tree
{
worker data;
int bf;//节点平衡因子
struct tree *rchild*lchild;
}node*bitree;
int insert(bitree &tworker xbool &taller);
int input()
{
int jn=0;
worker wor[MAXSIZE];
printf(“输入文件名\n“);
scanf(“%s“filename);
if((fp=fopen(“filename““w+“))==NULL)
{
printf(“the file error!\n“);
exit(0);
}
printf(“输入要录入的职工个数\n“);
scanf(“%d“&n);
printf(“输入%d个职工信息 职工号 姓名,工资,年龄 \n“n);
for(j=0;j {
scanf(“%d%s%f%d“&wor[j].numberwor[j].name&wor[j].wage&wor[j].age);
getchar();
}
for(j=0;j fprintf(fp“%-3d %-10s %-8f %-5d\n“wor[j].numberwor[j].namewor[j].wagewor[j].age);
fclose(fp);
return n;
}
void creat(int nbitree &t)
{//构建平衡排序树
int i;
bool taller=FALSE;
t=NULL;
worker wor;
if(n==0)
exit(0);
if((fp=fopen(“filename““r“))==NULL)
{
printf(“the file error\n“);
exit(0);
}
fscanf(fp“%d%s%f%d“&wor.numberwor.name&wor.wage&wor.age);
for(i=0;i {
insert(twortaller);
fscanf(fp“%d%s%f%d“&wor.numberwor.name&wor.wage&wor.age);
}
fclose(fp);
}
void r_rotate(bitree &t)
{//对以*t为根的二叉排序树作右旋转处理,处理之后t指向新的树根节点
// 即旋转之前的左子树的根节点
bitree lc=t->lchild;
t->lchild=lc->rchild;
lc->rchild=t;
t=lc;
}
void l_rotate(bitree &t)
{//对以*p为跟的二叉排序树作左旋转处理,处理之后p指向新的树根节点
// 即旋转之前的右子树的根节点
bitree rc=t->rchild;
t->rchild=rc->lchild;
rc->lchild=t;
t=rc;
}
void leftbalance(bitree &t)
{//对以指针t所指节点为根的二叉树作左平衡旋转处理,本算法结束时,指针t指向新的根节点
bitree lc=t->lchild;
switch(lc->bf)
{
case LH: //新节点插入在*t的左孩子的左子树上,要作单右旋处理
t->bf = lc->bf = EH;
r_rotate(t);
break;
case RH: //新节点插入在*t的左孩子的右子树上,要作双旋处理
bitree rd = lc->rchild;
switch(rd->bf)
{//修改*T及其孩子的平衡因子
case LH:
t->bf = RH;
lc->bf = EH;
break;
case EH:
t->bf = lc->bf = EH;
break;
case RH:
t->bf = EH;
lc->bf = LH;
break;
}
rd->bf = EH;
l_rotate(t->lchild);//对*t的左子树作左平衡处理
r_rotate(t);//对*t作右旋平衡处理
break;
}
}
void rightbalance(bitree &t)
{//对以指针t所指节点为根的二叉树作右平衡旋转处理,本算法结束时,指针t指向新的根节点
bitree rc = t->rchild;
switch(rc->bf)//检查*T的右子树的平衡度,并作相应的平衡处理
{
case RH:
//新节点插入在*t的右孩子的右子树上,要作单左旋处理
t->bf = rc->bf = EH;
l_rotate(t);
break;
case LH:
//新节点插入在*t的右孩子的左子树上,要作双旋处理
bitree ld = rc->lchild;
switch(ld->bf)
{//修改*t及其孩子的平衡因子
case RH:
t->bf = LH;
rc->bf = EH;
break;
case EH:
t->bf = rc->bf = EH;
break;
case LH:
相关资源
- 简单职工管理系统(控制台源码+txt数
- 二叉树排序树建立及平衡处理
- C++实现的职工管理系统
- C++MFC数据库职工信息管理系统,实现
- 使用平衡二叉树管理的学生管理系统
- 家族成员信息管理系统
- 二叉树 VC6.0 MFC实现 数据结构
- 二叉树的建立以及遍历
- MFC二叉树遍历的可视化
- 数据结构课程设计 职工管理系统 c语
- 职工工资管理系统C语言
- 二叉树的生成与遍历mfc
- 职工管理系统 Oracle课程设计
- 二叉树的前序中序后序遍历MFC
- MFC/VC二叉树的建立和显示画图形式显
- 用MFC实现的职工管理系统
- 二叉树的遍历及应用.ppt
- 基于多态的职工管理系统VS2017可运行
- 用二叉树做的心理测试mfc
- 二叉树和森林之间的转换
- 简单的基于MFC的职工管理系统数据库
- c++ mfc 单词及其释义的录入和读取,查
- 利用二叉树结构实现赫夫曼编/解码器
- 数据结构实验报告-实现二叉树的基本
- C语言判定一棵二叉树是否为二叉搜索
- 二叉树C语言以及构建表达式树
- c语言遍历二叉树
- C++前中后缀表达式转表达式二叉树
- mfc二叉树的实现,涉及到增加节点等
- 二叉树非递归遍历源码
评论
共有 条评论