资源简介
是一个本科生数据结构作业,里面附有一个课程设计报告书。作者是在本科二年级数据结构课上完成的,当时获得了优秀,希望可以给需要的人提供帮助。报告书的格式并不十分规范,请见谅。

代码片段和文件信息
//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
相关资源
- 数据结构年终考题范围和答案 耿国华
- 数据结构 朱战力 习题解答 数据结构
- 数据结构课程设计 6 1 彩票系统
- 教学计划编制系统
- 大数(链表、数组)实现
- 自己写的航空订票系统c 版--数据结构
- 数据结构实验魔王语言
- 航空订票系统_数据结构课程设计
- 多项式求和(数据结构C 版)
- 尚观培训linux董亮老师关于数据结构的
- 数据结构 知识点总结
- 华南理工大学数据结构复习提纲二
- 华南理工大学数据结构复习提纲一
- 数据结构用C 写的停车场系统源代码
- 数据结构(河北科技大学)
- 数据结构考前习题 清华大学出版社
- 数据结构课件(北邮)
- 数据结构实验 基于栈的表达式求值
- 数据结构课程设计——图书管理系统
- 成绩管理系统(数据结构)
- 数据结构-最小通信网问题
- 数据结构课程设计同学通讯录系统
- 数据结构课程设计 公园导游图
- 数据结构殷人昆版的课后答案
- 2006年湖北工业大学409数据结构试题
- 数据结构实验-魔王语言-源码加实验报
- 简单计算器的实现(数据结构)
- 简单计算器的实现(数据结构 修正版
- Fundamentals of Data Structure in C
- 北京邮电大学数据结构历年考研真题
评论
共有 条评论