随笔分类 - 数据结构
C++和Java实现
摘要:1.概念 平衡二叉树(AVL Tree)首先要满足二叉树的定义,如下 二叉排序树或者是一棵空树,或者是具有下列性质的二叉树: 若左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若右子树不空,则右子树上所有结点的值均大于它的根结点的值; 左、右子树也分别为二叉排序树; 没有键值相等的节点。
阅读全文
摘要:1.定义 二叉排序树(Binary Sort Tree),又称二叉查找树(Binary Search Tree),亦称二叉搜索树。 二叉排序树或者是一棵空树,或者是具有下列性质的二叉树: (1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值; (2)若右子树不空,则右子树上所有结点的值均大
阅读全文
摘要:1.顺序查找 从数组起始扫描到数组结尾,判断该索引数组是否和关键字相等,成功返回1 代码如下: 2.折半查找 适用于有序数组 不停地抛弃掉一半的结点,例子如下 我们要查找key=4的结点,获取中间值mid,mid=(low+high)/2,所以mid=(1+7)/2=4,发现4小于10,则可以锁定k
阅读全文
摘要:源码:https://github.com/cjy513203427/C_Program_Base/tree/master/55.%E5%9B%BE 结点类Noded.h 不需要存储索引 Node.cpp 将数据赋值给数据成员m_cData,是否访问置为否 需要实现的方法 图类cMap.h 构造函数
阅读全文
摘要:结点的构造 源代码:https://github.com/cjy513203427/C_Program_Base/tree/master/57.%E4%BA%8C%E5%8F%89%E6%A0%91%E9%93%BE%E8%A1%A8%E5%AE%9E%E7%8E%B0 需要实现的方法 创建树 申请
阅读全文
摘要:基本概念梳理 源代码:https://github.com/cjy513203427/C_Program_Base/tree/master/56.%E4%BA%8C%E5%8F%89%E6%A0%91%E6%95%B0%E7%BB%84%E5%AE%9E%E7%8E%B0 需要实现的方法 1.创建树
阅读全文
摘要:源码:https://github.com/cjy513203427/C_Program_Base/tree/master/54.%E9%93%BE%E8%A1%A8 需要实现的方法 1.构造函数 堆中为头结点m_pList申请内存 m_pList数据域置为0 指向地址为空,事实上这里声明了一个头结
阅读全文
摘要:源代码:https://github.com/cjy513203427/C_Program_Base/tree/master/53.%E9%A1%BA%E5%BA%8F%E8%A1%A8 定义: 线性表是n个数据元素的有限序列 需要实现的方法如下: 1.构造函数 传入用户指定的容量参数赋值给m_iS
阅读全文
摘要:栈的核心是LIFO(Last In First Out),即后进先出 出栈和入栈只会对栈顶进行操作,栈底永远为0。如果是入栈,要将入栈元素赋值给栈数组,再将栈顶上移一位;出栈时要先将栈顶下移一位,再将栈顶元素赋值给引用 源代码:https://github.com/cjy513203427/C_Pr
阅读全文
摘要:普通队列效率低下,主要体现在出队操作。 这里只讨论环形队列。 队列的核心思想是FIFO(First In First Out),即先入先出。 入队(新增元素)必须从队尾加入,出队(删除元素)必须从队首出去。 源代码:https://github.com/cjy513203427/C_Program_
阅读全文