![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
Ricardo.M.Jiang
这个作者很懒,什么都没留下…
展开
-
数据结构之堆栈与队列
堆栈与队列是两种重要的基础数据结构,一个是先入后出,一个是先入先出,有着广泛的应用,本文分别使用数组与链表实现堆栈与队列顺序存储方式实现堆栈#define MaxSize 20#define ERROR -1typedef struct { int Data[MaxSize]; int Top;} Stack;Stack *CreateStack( int maxSize)//原创 2016-03-05 20:39:04 · 1069 阅读 · 0 评论 -
数据结构之最小生成树
prime算法普里姆(Prim)算法,是用来求加权连通图的最小生成树的算法。 基本思想 对于图G而言,V是所有顶点的集合;现在,设置两个新的集合U和T,其中U用于存放G的最小生成树中的顶点,T存放G的最小生成树中的边。 从所有uЄU,vЄ(V-U) (V-U表示出去U的所有顶点)的边中选取权值最小的边(u, v),将顶点v加入集合U中,将边(u, v)加入集合T中,如此不断重复,直到U=V为止,最原创 2016-07-08 21:38:21 · 1220 阅读 · 0 评论 -
数据结构之哈夫曼树
哈夫曼树的介绍定义:给定n个权值作为n个叶子结点,构造一棵二叉树,若树的带权路径长度达到最小,则这棵树被称为哈夫曼树。 构造一棵哈夫曼树假设有n个权值,则构造出的哈夫曼树有n个叶子结点。 n个权值分别设为 w1、w2、…、wn,哈夫曼树的构造规则为: 将w1、w2、…,wn看成是有n 棵树的森林(每棵树仅有一个结点); 在森林中选出根结点的权值最小的两棵树进行合并,作为一棵新树转载 2016-06-18 20:54:50 · 1807 阅读 · 0 评论 -
数据结构之Dijkstra算法
本文主要包括以下内容 邻接矩阵实现无向图的BFS与DFS 邻接表实现无向图的BFS与DFS理论介绍深度优先搜索介绍图的深度优先搜索(Depth First Search),和树的先序遍历比较类似。 它的思想:假设初始状态是图中所有顶点均未被访问,则从某个顶点v出发,首先访问该顶点,然后依次从它的各个未被访问的邻接点出发深度优先搜索遍历图,直至图中所有和v有路径相通的顶点都被访问到。 若此时尚有转载 2016-07-03 22:04:17 · 1037 阅读 · 0 评论 -
数据结构之字典序全排列
字典序法中,对于数字1、2、3……n的排列,不同排列的先后关系是从左到右逐个比较对应的数字的先后来决定的。例如对于5个数字的排列 12354和12345,排列12345在前,排列12354在后。按照这样的规定,5个数字的所有的排列中最前面的是12345,最后面的是 54321。字典序算法如下: 设P是1~n的一个全排列:p=p1p2……pn=p1p2……pj-1pjpj+1……pk-1pkpk+1原创 2016-07-25 21:55:22 · 2077 阅读 · 0 评论 -
数据结构之二叉堆
二叉堆的介绍二叉堆是完全二元树或者是近似完全二元树,按照数据的排列方式可以分为两种:最大堆和最小堆。 最大堆:父结点的键值总是大于或等于任何一个子节点的键值; 最小堆:父结点的键值总是小于或等于任何一个子节点的键值。示意图如下:二叉堆一般都通过”数组”来实现。数组实现的二叉堆,父节点和子节点的位置存在一定的关系。有时候,我们将”二叉堆的第一个元素”放在数组索引0的位置转载 2016-06-16 21:12:28 · 1090 阅读 · 0 评论 -
数据结构之AVL树
AVL树是高度平衡的而二叉树。它的特点是:AVL树中任何节点的两个子树的高度最大差别为1。旋转如果在AVL树中进行插入或删除节点后,可能导致AVL树失去平衡。这种失去平衡的可以概括为4种姿态:LL(左左),LR(左右),RR(右右)和RL(右左)。下面给出它们的示意图:1) LL:LeftLeft,也称为”左左”。插入或删除一个节点后,根节点的左子树的左子树还有非空子节点,导致”根的左子树的高度”比原创 2016-06-15 21:40:57 · 2054 阅读 · 0 评论 -
数据结构之二叉搜索树
二叉搜索树一棵二叉树,可以为空;如果不为空,满足以下性质: 1. 非空左子树的所有键值小于其根结点的键值。 2. 非空右子树的所有键值大于其根结点的键值。 3. 左、右子树都是二叉搜索树。 二叉搜索树的插入,删除,查找 头文件 #include "iostream"#include "string.h"#include "sstream"using namespace std原创 2016-06-14 20:34:55 · 1039 阅读 · 0 评论 -
数据结构之二叉树的遍历
二叉树的遍历分为前序遍历,中序遍历,后序遍历,层序遍历,在本文中,前三种由递归实现,层序遍历由队列实现。#include "stdio.h"#include "stdlib.h"#include "windows.h"typedef struct Node{ char data; struct Node *Left; struct Node *Right; s原创 2016-03-06 20:17:23 · 1912 阅读 · 0 评论 -
数据结构之拓扑排序
React Native 开发越来越火了,web app也是未来的潮流, 现在react native已经可以完成一些最基本的功能. 通过开发一些简单的应用, 可以更加熟练的掌握 RN 的知识. 在学习的过程,发现了一个房产搜索APP的实例,但只有ios版本, 本文主要是房产搜索APP的android版本实现。原Ios版本 React Native 实例 - 房产搜索App Mystra原版效果转载 2016-07-10 20:05:12 · 1291 阅读 · 0 评论 -
数据结构之线性表
一、线性表的顺序存储实现,利用数组实现线性表typedef struct{ int Data[MAXSIZE]; int Last;}List;List *MakeEmpty(){ List *PtrL; PtrL=(List*)malloc(sizeof(List)); PtrL->Last=-1; return PtrL;}int Find原创 2016-03-05 14:54:00 · 769 阅读 · 0 评论 -
数据结构之DFS与BFS实现
本文主要包括以下内容 邻接矩阵实现无向图的BFS与DFS 邻接表实现无向图的BFS与DFS理论介绍深度优先搜索介绍图的深度优先搜索(Depth First Search),和树的先序遍历比较类似。 它的思想:假设初始状态是图中所有顶点均未被访问,则从某个顶点v出发,首先访问该顶点,然后依次从它的各个未被访问的邻接点出发深度优先搜索遍历图,直至图中所有和v有路径相通的顶点都被访问到。 若此时尚有转载 2016-06-26 15:51:59 · 4567 阅读 · 0 评论 -
数据结构之图的实现
本文主要包括以下内容 邻接矩阵实现无向图 邻接表实现无向图 邻接矩阵实现有向图邻接表实现有向图 图的理论基础,请参考:图的理论基础 - 如果天空不死 - 博客园邻接矩阵实现无向图MatrixUDG是邻接矩阵对应的结构体。 mVexs用于保存顶点,mVexNum是顶点数,mEdgNum是边数;mMatrix则是用于保存矩阵信息的二维数组。例如,mMatrix[i][j]=1,则表示”原创 2016-06-25 21:35:52 · 6413 阅读 · 0 评论 -
反转链表
题目给定一个常数K以及一个单链表L,请编写程序将L中每K个结点反转。例如:给定L为1→2→3→4→5→6,K为3,则输出应该为3→2→1→6→5→4;如果K为4,则输出应该为4→3→2→1→5→6,即最后不到K个元素不反转。输入格式:每个输入包含1个测试用例。每个测试用例第1行给出第1个结点的地址、结点总个数正整数N(<= 105)、以及正整数K(<=N),即要求反转的子链结点的个数。结点的地址是5原创 2016-03-28 08:51:52 · 842 阅读 · 0 评论 -
C语言实现大数据除法
本题要求计算A/B,其中A是不超过1000位的正整数,B是1位正整数。你需要输出商数Q和余数R,使得A = B * Q + R成立。输入格式:输入在1行中依次给出A和B,中间以1空格分隔。输出格式:在1行中依次输出Q和R,中间以1空格分隔。输入样例: 123456789050987654321 7 输出样例: 17636684150141093474 3代码实现如下#include "stdi原创 2016-03-07 19:21:59 · 4491 阅读 · 0 评论 -
C++实现大数据乘法
结构体定义与封装struct bigdatacom{private : char dataa[100]; char datab[100];public : void init(const char *str1,const char *str2) { std::cout<<typeid(*this).name()<<std::endl;原创 2016-02-03 11:09:52 · 2050 阅读 · 0 评论 -
KMP算法学习
kmp算法完成的任务是:给定两个字符串O和f,长度分别为n和m,判断f是否在O中出现,如果出现则返回出现的位置。常规方法是遍历a的每一个位置,然后从该位置开始和b进行匹配,但是这种方法的复杂度是O(nm)。kmp算法通过一个O(m)的预处理,使匹配的复杂度降为O(n+m)。参考链接:【经典算法】——KMP,深入讲解next数组的求解 - c_cloud - 博客园 讲解的非常清楚明白主要就是nex转载 2016-08-11 21:21:59 · 1174 阅读 · 0 评论