数据结构
程序小黑
这个人很懒,什么都不想说。。
展开
-
C/C++泛型编程实现数据结构之线性表
C/C++泛型编程实现数据结构之线性表泛型编程与面向对象编程的目标相同,即使重用代码和抽象通用概念的技术更加简单。但是面向对象编程强调编程的数据方面,泛型编程强调的是独立于特定数据类型。侧重点不同。template <typename DataType,int MaxSize>class Liner_table {private:public: DataT...原创 2018-09-12 09:52:28 · 52419 阅读 · 0 评论 -
自动化哈夫曼编码
#include <stdio.h>#include <stdlib.h>#include <string>/* 作者:CSDN程序小黑 QQ:1152193204 日期:2019-9-29*/#define MIN 32 //ASCII树最小编码范围#define MAX 135 //ASCII树最大编码范围#define ...原创 2019-09-29 09:52:13 · 433 阅读 · 0 评论 -
C++泛型建立数据结构类
分享一个大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到人工智能的队伍中来!http://www.captainbed.net/xiaohei由于一些比赛耽误了太久,最近又拿起了数据结构做起了复习。写了一个类#include <stdio.h>#include <string>#include <stdlib.h>#incl...原创 2019-07-03 11:05:15 · 515 阅读 · 0 评论 -
散列表的查找和插入算法
散列表查找散列表查找是一种特殊的查找方法,它能够通过对关键字的值快速定位待查找元素的位置。再查找方面,散列表有着极高的效率。但是一个散列表或多或少会存在冲突,为了解决冲突,我们设计了两个方法,一个是开放定址法,另一个就是拉链法。开放定址法又分为线性探查法,二分探查法和双重散列法,就效率而言,双重散列法的效率是最优的,但是其中最为直观的方法还是线性探查法。基本思想使用某种方法在散列表中形成一...原创 2018-10-09 14:14:10 · 50381 阅读 · 2 评论 -
C/C++实现数据结构之图的遍历算法
图形结构是一种在生活以及工业中很常用的数据结构。有着关系明确、运算快捷的优点。但是学习难、入门起点高,对数学能力有很高的要求。图的遍历图的遍历和树的遍历类似。首先这里就不再赘述图的逻辑结构了。有向图和无向图这里就先假设为邻接矩阵表示,直观的体现下图的存储结构的特点。邻接表不过就是有入边和出边来体现图的点集和边集的特点。这两种逻辑结构其实并没有太大的区别。就像树有三种遍历方式一样(前序遍历、中...原创 2018-10-08 09:38:37 · 57102 阅读 · 1 评论 -
C/C++ 基于对勾函数和双曲线实现高效率散列函数,实现真正意义上的减少冲突!!
C/C++ 基于对勾函数和双曲线实现高效率散列函数,实现真正意义上的减少冲突!!本散列函数基于对勾函数和双曲线函数实现。对勾函数图像:双曲线函数图像:散列函数分析通过以上两个函数我们可以制造一个散列函数,符合x2/a2 - y2/b2=1,且a,b值相同。在下面的代码中,我们将会假设a的值为1,b的值为2,且我们要使用散列表,将待操作数43传入其中并获得其索引,可以得到y = sq...原创 2018-10-06 12:10:00 · 50094 阅读 · 0 评论 -
使用C#(Winform)实现扫雷的核心代码
使用C#(Winform)实现扫雷的核心代码扫雷作为一款风靡全世界的游戏,赢得了许多玩家的热爱。我们今天将来做一个程序员该做的,扫雷是如何实现的?我的游戏制作是一个C#小白所能看懂的,并没有涉及高深的数据结构和算法。各位有兴趣可以使用一些算法来优化和完善我的程序,但是本程序有许多不足之处也是我们有目共睹的。对于游戏的优化可以将所有的遍历换成图形结构的广度或深度优先算法,而顺序存储在我的程序中...原创 2018-10-03 16:24:18 · 53745 阅读 · 9 评论 -
C++基于STL库实现箱排序
C++基于STL库实现箱排序箱排序简单介绍:箱排序是一种分配排序方法。这是一种不需要比较的排序方法,可以让时间复杂度降为一线性阶O(n)。常用的分配排序有箱排序和基数排序。而基数排序是基于箱排序基础上实现的,所以这里着重介绍箱排序。箱排序的基本思想是:设置若干个箱子,依次扫描待排序的记录R[0]、R[1]、R[2]……R[n-1],把关键字等于K的记录全部装入第k个箱子里,然后依次将各非空的...原创 2018-09-20 14:28:08 · 50091 阅读 · 0 评论 -
C/C++泛型编程实现数据结构之栈
C/C++泛型编程实现数据结构之栈栈是访问受限的线性表,遵循了后进先出的原则,只允许在栈顶进行操作。这里栈是一种数据结构。但是我们仍然可以对其进行存储结构上的划分。在这里我们会把它分成顺序存储结构和链式存储结构两种方案进行划分,也就是说这里我们会编写两个模板类来实现栈的基本操作。栈的基本操作判栈满(顺序存储结构)判栈空入栈出栈取栈顶元素初始化栈顺序栈在...原创 2018-09-14 10:37:05 · 53084 阅读 · 0 评论 -
C语言实现数据结构之归并排序
C/C++实现数据结构之2路-归并排序归并排序和交换排序、选择排序的思想不一样,归并的含义是将两个或两个以上的有序表组合成一个新的有序表。假定待定排序表含有n个记录,则可以看成是N个有序的子表。每个子表长度为1,然后两两归并,得到N/2个长度为2或1的有序表。再两两归并。如此重复,直到获得一个长度为n的有序表为止。这种方法称为2路归并排序函数实现:merge()函数的功能是将两个有序表归并为...原创 2018-09-19 09:48:21 · 53455 阅读 · 6 评论 -
C/C++实现树形结构之二叉树
C/C++实现树形结构之二叉树树的概念树形结构是一类非常重要的非线性数据结构,树中节点的位置具有明确的层次关系。并且结点之间有分支,非常类似于真正的树。而我们这里着重讲述的是二叉树。二叉树是树形结构的一种重要的类型,在实际应用中有着非常重要的作用和意义。二叉树是n个节点的有限集合,他的每个节点至多只有两棵子树。当然也可以是空集。或者是由一个根节点及两棵互不相交的分别成为这个根的左子树和右子树...原创 2018-09-19 07:46:45 · 54372 阅读 · 5 评论 -
C/C++泛型编程实现数据结构之单链表(附操作系统原理深度刨析)
C/C++泛型编程实现数据结构之单链表线性表的链式存储结构线性表的顺序存储结构的特点是:在逻辑上关系相邻的元素在物理上的位置也是相邻的,因此顺序存储结构的线性表随机存储的时间复杂度为O(1),因为CPU不比花费过多的时间在内存寻址中,数据排列在内存中是紧凑的。但是正因如此,导致顺序存储的插入和删除操作需要一一移动元素来实现,最坏情况下的时间复杂度可以达到O(N^2)当经常需...原创 2018-09-13 09:42:52 · 51781 阅读 · 0 评论 -
C/C++泛型编程实现数据结构之广义表
C/C++泛型编程实现数据结构之广义表广义表是线性表的推广,又称列表。线性表的元素只限于原子项,即每个数据元素只能是一个数或一个记录,如果放松对线性表元素的这种限制,允许他们自身具有结构,那么就产生了广义表。广义表是一种多层次的线性结构,像是一颗倒扣的树,实际上,这也算是一种树形结构。广义表不仅是线性表的推广,也算是树结构的推广。广义表的存储结构广义表的元素本身可以具有结构,这是一种带有层...原创 2018-09-18 09:23:58 · 52767 阅读 · 1 评论 -
基于C实现数据结构之二叉排序树
基于C实现数据结构之二叉排序树树表查找树表查找是对树形存储结构所做的查找。树形存储结构是一种多链表,表中每个节点包含有一个数据域和多个指针域。每个指针指向一个后继节点,树形存储结构和树形结构时完全对应的,都表示一个树形图,只是用存储结构中的链指针代替逻辑结构中的抽象指针罢了,因此,往往把树形存储结构和树形逻辑结构统称为树结构或树。 什么是二叉排序树二叉排序树又称为二叉查找...原创 2018-09-17 12:09:19 · 53207 阅读 · 0 评论 -
C/C++泛型编程实现数据结构之队列
C/C++泛型编程实现数据结构之队列早在曾经一篇博文中,我曾介绍过顺序存储和链式存储的区别和好处,博文传送门:https://blog.csdn.net/qq_27180763/article/details/82683029本章将讲诉: 1. 队列的逻辑结构刨析 2. 顺序存储结构下的循环队列 3. 链式存储结构下的循环链队列 4. C/C++泛型编程类模板实现队...原创 2018-09-17 08:39:46 · 53193 阅读 · 0 评论 -
C源代码:希尔排序
#include <stdio.h>//希尔排序--优化过的插入排序void sort(int* arr, int len){ int mid = len; int gap = len; do{ mid = mid / 2; if (mid == 0) { gap = 1; } else { gap = mid; } for (int ...原创 2019-10-08 10:10:42 · 442 阅读 · 0 评论