![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
josenxiao
吴军老师的数学之美。我们同时也要做到计算之美,数据之美。学习而快乐
展开
-
简单实现双链表---学习
链表的创立过程,其实即位小朋友玩的“手拉手”游戏,你拉着我,我拉着你,这样循环下去。链表的创立:--数据类型这里以‘#’来表示结束Node * CreateList(){ Node *temp,*p; p=(Node*)malloc(sizeof(Node)); temp=p; p->pro=NULL;原创 2017-07-30 13:21:08 · 202 阅读 · 0 评论 -
二叉查找树简单实现
二叉查找树其实在实际中起效率非常高,特别在于处理其中的数据。实际工作中我认为会有用处的:1、中序排列是一个按照从到大的序列来实现的;2、删除一个元素,会在右子树的最小的一个元素来进行补上其位置,让其中的数据结构不变;3、删除元素后数据结构会有变化,数据最坏遍历查询是:O(N)平均是O(logN)实现的代码:#include #include typedef原创 2017-09-11 22:53:01 · 175 阅读 · 0 评论 -
数据结构常见的排序
1、冒泡排序-- 两层循环的run,有一个优化指出就是当后面的数打于前面一个是可以结束一个循环这样可以节省时间;2、插入排序,最好情况为O(NlogN):void insertSort(int *a,const int &length){ int n=length; int j; for(int i=1;i原创 2017-09-02 11:02:50 · 259 阅读 · 0 评论 -
散列---分离连接法
分离连接法,将散列到同一个值都进行保留到表中。其散列函数hash(x)=x mod tableSize;其实之前自己写过这个散列,现在是在原来基础之上拓展的。数据构成: typedef struct node{ Data da[MAX]; unsigned int key;//索引 unsigned int value;//该值出现的次数原创 2017-09-23 22:38:23 · 341 阅读 · 0 评论 -
链表--稀疏矩阵
稀疏矩阵,用链表实现这样可以大大节省空间,其运用也很简单:templateclass T>struct Node{ T value; T colun; Node *next;};template class T>void IntialRetange(int n,Node **p){ p=(N原创 2017-08-22 17:56:14 · 1060 阅读 · 0 评论 -
数据结构-链表队列实现
实现的方法是非常简单的,队列是非常重要的基本存储数据的方式之一,同时也是创建数的基本之一。使后续学习的基础:实现的代码:typedef int Element;typedef struct queue{ Element data; structqueue *next;}Node;typedef struct Queue{原创 2017-08-15 17:16:40 · 314 阅读 · 0 评论 -
哈希--数组实现和邻接链表
数组实现为:以8个为例子#define Max 8//the size of exampletemplateclass T>struct node{ T data; unsignedint flag;};nodeint> *test=newnodeint>[10]; int arr[Max];原创 2017-08-14 21:51:56 · 506 阅读 · 0 评论 -
哈希---邻接表(简单实现)
设计用C语言来实现----实现的视图:实现的代码为:(mod 5为例子)typedef int Element; struct node{ Element data; struct node *next;}Node[5];void iniList(){ for(int i=0;i<5 i="" node="" i="" data="i;" void="" setdata="" elem原创 2017-08-14 16:09:15 · 1239 阅读 · 0 评论 -
贪心算法-(哈夫曼编码)HuffmanCode
哈夫曼编码应用在于对于文件的压缩,压缩效率是非常的高。实现哈夫曼编码,得首先知道哈夫曼树的形成过程是怎样进行的:1、对于所要编码的数据,首先得将它们中找到其中的最小的两个位置合并成一个小树,节点的权值是两者相加形成的;2、步骤1中得到的权值在进入原排列中,在此获取新组合中的最小的两个数据,在执行步骤1;3、对于步骤1、2要重复执行它,执行的次数其实可以思考一下,其实有n个数,执行的次数原创 2017-08-19 11:58:44 · 4975 阅读 · 0 评论 -
非递归创建二叉树
非递归创建二叉树,其实我们如果学过回溯算法,它的理解是不是还要简单一些。创建一个节点,我们是不是要知道它的左孩子、右孩子是有还是没有,孩子下还有孩子。我们知道这样下去好想无法知道上面该怎样进行。也就是我们要知道下一步还要找到它的根节点。这样我们是不是要借助一个容器来保存节点。将上一级的根入栈,我这里又一个例子使用‘#’来进行判断是否进行下去(简单的就是它有没有该节点)。我是给大家一点思路:一、原创 2017-08-18 17:05:22 · 2985 阅读 · 0 评论 -
数据结构-栈的实现
Stack是对于数据结构,数据存储非常重要的,其实对于自己而言也是在学习之中。我认为学习者要更多去将实际而转化成计算机的代码进而实现其价值。这是基础,有了基础我认为处理一些现实问题(抽象成计算机模型)才会有更好的办法。例如解决NP问题等。实现Stack,你首先应该理解它的构造,其原理其实有很多人都明白,我是用C去实现,(我认为想我们这种学习者应该减少用C++,java等面向对象语言,它们都有封原创 2017-08-01 10:59:54 · 288 阅读 · 0 评论 -
链表的合并(先排序在合并)
数据结构----学习原创 2017-07-31 00:48:13 · 609 阅读 · 1 评论 -
二叉平衡树-AVL
二叉平衡树其左右 的子树的深度相差的大小是小于或等于1的。其达到的是一种类似动态平衡的状态,中序遍历是一个从小到大的排列序列。其与二叉查找树似乎有些相似,但是其平均深度为logN。实现的具体步骤为:数据结构:#include #include typedef int Element;typedef struct node{ Element da原创 2017-09-12 07:52:15 · 172 阅读 · 0 评论