资源简介
是一个本科生数据结构作业,里面附有一个课程设计报告书。作者是在本科二年级数据结构课上完成的,当时获得了优秀,希望可以给需要的人提供帮助。报告书的格式并不十分规范,请见谅。
代码片段和文件信息
//AVL(自动平衡二叉树)
#include “stdafx.h“
#include
#include
#include
#include
#include
using namespace std;
#define MaxSize 100
typedef int ElemType;
//每个结点的平均值
struct Keytype //关键数据类型
{
char id[19];
char name[11];
char address[21];
char phone[12];
};
typedef enum
{
EH = 0
LH = 1
RH = -1
}bh_t;
typedef enum
{
FALSE = 0
TRUE = 1
}bool_t;
//定义平衡二叉树
typedef struct BSTNode
{
Keytype key;
int bf; //平衡值
struct BSTNode *lchild *rchild;
}BSTNode *BSTree;
typedef struct
{
BSTree data[MaxSize];
int top;
}SqStack;
BSTree root = NULL r;
int n;
//判断栈空函数
bool StackEmpty(SqStack *s)
{
return (s->top == -1);
}
//初始化栈
void InitStack(SqStack *& s)
{
s = (SqStack *)malloc(sizeof(SqStack));
s->top = -1;
}
//进栈
bool Push(SqStack *& s BSTree e)
{
if (s->top == MaxSize - 1)
return false;
s->top++;
s->data[s->top] = e;
return true;
}
//退栈
bool Pop(SqStack *&s BSTree &e)
{
if (s->top == -1)
return false;
e = s->data[s->top];
s->top--;
return true;
}
//中序遍历
void InOrderTraverse(BSTree root)
{
if (NULL != root)
{
InOrderTraverse(root->lchild);
cout << root->key.name << “ “ << root->key.id << “ “ << root->key.address << “ “ << root->key.name << endl;
InOrderTraverse(root->rchild);
}
}
//右旋转
void R_Rotate(BSTree *p)
{
BSTree lc = (*p)->lchild;
(*p)->lchild = lc->rchild;
lc->rchild = *p;
*p = lc;
}
//左旋转
void L_Rotate(BSTree *p)
{
BSTree rc = (*p)->rchild;
(*p)->rchild = rc->lchild;
rc->lchild = *p;
*p = rc;
}
//左平衡旋转
void LeftBalance(BSTree *T)
{
BSTree lc = (*T)->lchild;
BSTree rd = lc->rchild;
//判断进行向哪边旋转
switch (lc->bf)
{
case LH:
(*T)->bf = lc->bf = EH;
R_Rotate(T);
break;
case RH:
switch (rd->bf)
{
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));
R_Rotate(T);
break;
}
}
//右平衡旋转
void RightBalance(BSTree *T)
{
BSTree rc = (*T)->rchild;
BSTree ld = rc->lchild;
switch (rc->bf)
{
case RH:
(*T)->bf = rc->bf = EH;
L_Rotate(T);
break;
case LH:
switch (ld->bf)
{
case RH:
(*T)->bf = LH;
rc->bf = EH;
break;
case EH:
(*T)->bf = rc->bf = EH;
break;
case LH:
(*T)->bf = EH;
rc->bf = RH;
break;
}
ld->bf = EH;
R_Rotate(&((*T)->rchild));
L_Rotate(T);
break;
}
}
//插入元素
bool_t InsertAVL(BSTree *t Keytype e bool_t *taller) //二叉树插入算法
{
if (NULL == t)
return FALSE;
if (NULL == *t)
{
*t = (BSTree)malloc(sizeof(BSTNode));
if (NULL == *t)
return FALSE;
(*t)->key = e;
(*t)->lchild = (*t)->rchild = NULL;
(*t)->bf = EH;
*taller = TRUE;
}
else
{
if (e.id == (*t)->key.id)
{
*taller = FALSE;
return FALSE;
}
if (e.id
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 22 2018-02-22 17:12 身份证信息管理系统\f2.dat
文件 16924 2018-02-18 23:21 身份证信息管理系统\身份证信息管理系统.cpp
文件 741567 2018-08-31 23:03 身份证信息管理系统\身份证信息管理系统.docx
文件 2582494 2018-02-22 18:42 身份证信息管理系统\身份证信息管理系统.rar
目录 0 2018-08-31 23:03 身份证信息管理系统
----------- --------- ---------- ----- ----
3341007 5
相关资源
- 挑战程序设计竞赛2 算法和数据结构
- 单链表的基本操作(实验)
- 顺序表的基本算法(实验)
- 数据结构第二版配套课件及答案
- 数据结构课设-模拟电梯
- 物业费管理系统源码超详细注释附文
- 数据结构算术表达式求值实验报告
- 数据结构课程设计 表达式类型的实现
- 长整数的代数计算 算法
- 数据结构与程序设计考研试题精选及
- 山东大学数据结构部分笔记.rar
- 数据结构 (STL框架)Part 1
- 数据结构 课程设计 中缀算术表达式求
- 数据结构课程设计----表达式类型的实
- 数据结构课程设计表达式类型的实现
- 资源管理器 中国地质大学数据结构
- 广工数据结构实验
- 数据结构图遍历的演示
- 数据结构课程设计——基于链表与哈
- 02331数据结构复习题及答案
- 数据结构停车管理系统
- 表达式求值问题 数据结构
- 数据结构与算法-AV阿霍 JE霍普克罗夫
- 杭电数据结构课设自选题
- 数据结构期末考试试卷
- “数据结构与算法”课程学习总
- 表达式求值 数据结构
- 外排序初始游程的生成
- 数据结构课程设计之电梯模拟
- 大话数据结构原书+源代码.zip164041
评论
共有 条评论