AVL树的c语言实现
导语:C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。下面我们来看看AVL树的c语言实现,希望对大家有所帮助。
AVL树的c语言实现:在计算机科学中,AVL树是最先发明的自平衡二叉查找树。在AVL树中任何节点的.两个子树的高度最大差别为一,所以它也被称为高度平衡树。查找、插入和删除在平均和最坏情况下都是O(log n)。增加和删除可能需要通过一次或多次树旋转来重新平衡这个树。
1.节点
(1)节点的定义
123456789 | typedef int KeyType; typedef struct AvlNode { KeyType key; //数据 AvlNode *leftchild; //左孩子 AvlNode *rightchild; //右孩子 AvlNode *parent; //双亲结点 int balance; //平衡因子 }AvlNode,*AvlTree; |
(2)结点的创建
123456789101112 | AvlNode *BuyNode() { AvlNode *p =(AvlNode *)malloc(sizeof(AvlNode)); if ( p != NULL) { p->leftchild = NULL; p->rightchild = NULL; p->parent = NULL; p->balance = 0 ; } return p; } |
2.旋转
如果在AVL树中进行插入或删除节点后,可能导致AVL树失去平衡。这种失去平衡的可以概括为4种姿态:左单旋转,右单旋转,左平衡,右平衡。(1)左单旋转:也叫左左旋转。
-
C语言编程中的联合体union入门学习教程详解
联合体(union)在C语言中是一个特殊的数据类型,能够存储不同类型的数据在同一个内存位置。可以定义一个联合体使用许多成员,但只有一个部件可以包含在任何时候给定的值。联合体会提供使用相同的存储器位置供多用途的有效方式。定义联合体要定义联合体,必须使用unio...
-
2017计算机二级C语言备考训练题
在复习阶段多做练习可以帮助我们巩固知识和提高做题速度以及掌握做题技巧等。下面是应届毕业生考试网小编为大家整理的2017年计算机二级C语言备考训练题,希望可以帮助到大家的学习!一、填空题(1)算法的基本特征是可行性、确定性、______和拥有足够的情报。答:有...
-
在VS下如何运行C语言程序
微软后来对VC6.0进行了升级,并更名为VisualStudio(简称VS),支持更多的编程语言,更加强大的功能,不过VisualStudio文件很大,有2~3G左右,大部分功能初学者暂时不会用到;而且安装繁琐,需要将近半个小时的时间,也不容易卸载干净。VisualStudio还有一个缺点是占用资源较多,不...
-
C语言如何提高程序效率
好的代码没有一个统一的衡量标准,在程序员们的世界里大家也是各自按照自己的标准衡量着自己和别人的代码。不过有一个标准几乎是被所有人认同的。服役时间越长、出错率越高的代码就是好代码。所有的编程方法、代码技巧甚至于设计模式都是为了达到这个目的而产生...
相关文章
- 如何理解Javascript的caller,callee,call,apply区别
- 如何理解Javascript的caller,callee,call,apply区别
- 如何理解Javascript的caller,callee,call,apply区别
- 如何理解Javascript的caller,callee,call,apply区别
- 如何理解Javascript的caller,callee,call,apply区别
- 如何理解Javascript的caller,callee,call,apply区别
- 如何理解Javascript的caller,callee,call,apply区别
- 如何理解Javascript的caller,callee,call,apply区别
- 如何理解Javascript的caller,callee,call,apply区别
- 如何理解Javascript的caller,callee,call,apply区别