
数据结构
vvc223c
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
List C/C++代码实现
template<typename Object>class List{private: struct Node { Object data; Node *prev; Node *next; Node(const Object& d = {}, Node*p = nullptr, Node * n = nullptr) :data(d), prev(p...原创 2020-02-07 16:08:17 · 797 阅读 · 0 评论 -
列表vector C/C++实现
C/C++实现template<typename Object>class Vector{private: int Size; int Capacity; Object * objects;public: explicit Vector(int initSize = 0); Vector(const Vector& rhs); Vector(Vector&...原创 2020-02-06 16:17:55 · 349 阅读 · 0 评论 -
图(Graph)C/C++、C#代码实现
定义图是由一组顶点和一组能够将两个顶点的边组成的,如果点对是有序的,那么图就叫有向图。怎么样在程序中表示一个图?1.邻接矩阵使用邻接矩阵的好处:1.直观、简单2.方便检查任意一对顶点间是否存在边3.方便找任一顶点的所有邻接点4.方便计算任一顶点的度(出度和入度)缺点:1.浪费空间,如果图是稀疏的,有大量无效元素.2.浪费时间,统计稀疏图一共有多少条边.2.邻接表...原创 2019-11-27 19:44:41 · 1294 阅读 · 0 评论 -
散列哈希C/C++、C#代码实现
散列函数1.直接定址法取关键字的某个线性函数值为散列地址:h(key) = a x key + b2.除留余数法h(key) = key mod p这里的p一般是素数3.数字分析法分析数字关键字在各位上的变化情况,取比较随机的位作为散列地址。比如,取11位手机号码key的后4位作为地址h(key) =atoi(key+7)4.折叠法把关键词分割成位数相同的几个部分,然...原创 2019-11-26 13:58:04 · 396 阅读 · 0 评论 -
堆(优先队列)C/C++、C#代码实现
堆是一颗被完全填满的二叉树,它的任一结点的关键字是其子树所有结点的最大值或最小值,最大值的则是最大堆,也称大顶堆,最小值的则是最小堆,也称小顶堆。比如:最小堆C/C++实现#pragma once#include <vector>#include <initializer_list>template <typename Comparable>c...原创 2019-11-23 19:33:51 · 244 阅读 · 0 评论 -
平衡二叉树(AVL树)C/C++、C#代码实现
平衡二叉树是带有平衡条件的二叉查找树,指的是空树或者任一结点左、右高度差的j绝对值不超过1的二叉树.比如:实现的难点在于,二叉树的平衡旋转分为四种旋转,RR、LL、LR、RL旋转RR旋转麻烦结点在发现者右子树的右边,所以叫RR插入,需要RR旋转LL旋转麻烦结点在发现者左子树的左边,所以叫LL插入,需要LL旋转LR旋转RL旋转C/C++实现#include <s...原创 2019-11-23 16:01:13 · 582 阅读 · 1 评论 -
二叉树C/C++、C#代码实现
关键在于删除分三种情况:1.删除的是叶节点,直接删除,并修改其父节点对应的节点指针为nullprt2.删除只有一个子节点的节点: 将父节点的指针指向要删除节点的子节点C/C++实现#include <stack>//栈#include <queue>#include <iostream>using namespace std;template ...原创 2019-11-23 14:16:12 · 568 阅读 · 3 评论