数据结构
qingkongyeyue
拼搏到无能为力,坚持到感动自己,有些路走下去很长,很累,但是不走会后悔。人生最大的痛苦,莫过于,坚持了不该坚持的,而放弃了不该放弃的
展开
-
几种常见的字符串匹配算法
转自http://www.360doc.com/content/14/0325/15/15064667_363609292.shtml1. 朴素算法朴素算法是最简单的字符串匹配算法,也是人们接触得最多的字符串匹配算法。代码一看就懂,在此不在赘述。#include#includevoid search(char *pat, char *txt){ int M = strle转载 2016-12-05 13:24:03 · 7374 阅读 · 0 评论 -
采用队列数据结构按层次遍历二叉树
转自http://blog.sina.com.cn/s/blog_5207b6c401009fq0.html采用一般的队列来存储和访问二叉树访问过程描述如下:访问根结点,并将该结点记录下来;若记录的所有结点都已处理完毕,则结束遍历操作;否则重复下列操作。取出记录中第一个还没有访问孩子的结点,若它有左孩子,则访问左孩子,并将记录下来;若它有右孩子,则访问右孩子,并记录下来。转载 2017-01-11 14:54:22 · 1182 阅读 · 0 评论 -
多叉树
1、树T的度为4,其中度为1,2,3和4的结点个数分别为4,2,1,1,则T中的叶子数为一个结点有几个子树(即 边)就是多少度,于是树T共有 1*4+2*2+3*1+4*1 = 15(条边)一颗树的 边数=结点数-1 故T有16个结点 显然,总的结点数目-去非0度的结点数=叶子数 于是 对于树T有 16-4-2-1-1 = 8原创 2017-01-12 11:34:07 · 564 阅读 · 0 评论 -
二叉树
0、二叉树的概念n 2 =n 0 -1 其中,n 2 是二叉树度为2的结点数, n 0 是二叉树度为零的结点。在证明之前先了解如下概念:1)度:结点拥有的子树数称为结点的度。度为0的结点称为叶结点或终端结点。 2)分支线总数:从分支线进入结点的角度计算分支原创 2017-01-09 15:20:53 · 857 阅读 · 0 评论 -
堆、大根堆、小根堆
堆是一种经过排序的完全二叉树,其中任一非终端节点的数据值均不大于(或不小于)其左孩子和右孩子节点的值。根结点(亦称为堆顶)的关键字是堆里所有结点关键字中最小者的堆称为小根堆。 根结点(亦称为堆顶)的关键字是堆里所有结点关键字中最大者,称为大根堆。转载 2017-01-11 13:30:37 · 2443 阅读 · 0 评论 -
平衡树、平衡二叉查找树、二叉排序树(查找树)
1、平衡树(1)概念平衡树左右子树的高度差的绝对值不超过1(左右子树的高度差为该结点的平衡因子,只能取-1,0,1),且其左右子树也是平衡树。(2)向平衡树中插入结点时,该结点一定是插入在叶子结点上的。原创 2017-01-11 10:36:52 · 969 阅读 · 0 评论 -
哈夫曼树
1、概念哈夫曼树是带权路径长度最短的树,也叫最优二叉树2、哈夫曼树的构造第一步:排序 2 4 5 9第二步:挑出2个最小的 2 4 为叶子构造出 62 4第三步:判断 6 不大于 5或9(剩余叶子中最小的2个)=》 同方向生长,得出转载 2017-01-09 10:57:25 · 946 阅读 · 0 评论 -
B树
1、B树的结构定义转载 2017-01-12 14:56:15 · 267 阅读 · 0 评论 -
常见排序算法小结
转自http://blog.csdn.net/whuslei/article/details/6442755 排序算法经过了很长时间的演变,产生了很多种不同的方法。对于初学者来说,对它们进行整理便于理解记忆显得很重要。每种算法都有它特定的使用场合,很难通用。因此,我们很有必要对所有常见的排序算法进行归纳。 我不喜欢死记硬背,我更偏向于弄清来龙去脉,理解性地记忆。比如下面这张图,转载 2017-02-08 14:49:22 · 449 阅读 · 0 评论 -
二叉树笔试题
转自http://blog.csdn.net/luxiaoxun/article/details/7537659题目:输入两棵二叉树A和B,判断树B是不是A的子结构递归判断:如果当前结点值相等,就判断左子树和右子树是否是子结构[cpp] view plain copy print?bool IsChildTree(Node * father, Node转载 2017-02-20 09:46:22 · 1371 阅读 · 0 评论 -
树及树的遍历
转自http://www.cnblogs.com/yc_sunniwell/archive/2010/06/27/1766233.html树(Tree)树,顾名思义,长得像一棵树,不过通常我们画成一棵倒过来的树,根在上,叶在下。不说那么多了,图一看就懂:当然了,引入了树之后,就不得不引入树的一些概念,这些概念我照样尽量用图,谁会记那么多文字?树这种结构还可以表示成下面这种方转载 2017-01-05 15:46:34 · 374 阅读 · 0 评论 -
常见查找算法总结
转自http://blog.csdn.net/zengtian006/article/details/24034977静态查找结构主要有两种:顺序查找、折半查找一、顺序查找:这个就不用说了,一个一个的差吧,很差劲的算法了,时间复杂度是O(n) public int shunXuSearch( int[] b, int c) { f转载 2017-02-14 14:54:31 · 694 阅读 · 0 评论 -
树、森林与二叉树的转换总结
转自http://blog.csdn.net/xin917480852/article/details/50503501目录(?)[+]前言树转换成二叉树森林转换成二叉树二叉树转换成树二叉树转换成森林前言: 在树这一块的数据结构中最重要的就是二叉树,但是对于我们大部分人来说二叉树的基础掌握还是ok的,但是有时候我们也会忽略了树于森林(本转载 2017-04-12 10:18:36 · 1855 阅读 · 0 评论 -
一步一步写算法(之hash表)
转自http://blog.csdn.net/feixiaoxing/article/details/6885657【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 hash表,有时候也被称为散列表。个人认为,hash表是介于链表和二叉树之间的一种中间结构。链表使用十分方便,但是数据查找十分麻烦;二叉树中的数据严格有转载 2017-04-18 11:39:52 · 343 阅读 · 0 评论 -
查找
1、折半查找折半查找的前提是已经对数据做好了排序,然后再折半查找例如排序后的数据是1 5 12 35 64 78 89 123 456你要查找12,首先用12跟上面排好顺序的9个数中间那个比较(64),12<64,因此你查找的数据在前半部分,即1 5 12 35 64,再用12跟前半部分中间那个数比较(12),这样找了2次就找到了折半查找的目的是提高查找的效率2、二元原创 2017-01-09 10:28:19 · 224 阅读 · 0 评论 -
数组、链表、堆栈和队列、线性表和顺序表
转自http://blog.csdn.net/amork/article/details/7258216数据结构:是指相互之间存在一种或多种特定关系的数据元素的集合。听起来是不是很抽象,简单理解:数据结构就是描述对象间逻辑关系的学科。比如:队列就是一种先进先出的逻辑结构,栈是一种先进后出的逻辑结构,家谱是一种树形的逻辑结构!(初学数据结构的时候很不理解为什么有“栈”这个东西;队列很容易理解转载 2016-12-26 13:51:06 · 6043 阅读 · 0 评论 -
单链表的逆置
转自https://zhidao.baidu.com/question/403895451.html从数据结构的定义来看这是一个带头节点的链表。要弄的十分明白你要耐心点画图看看。我简单的说下思路:【head是指向头结点的】p=head; //p最开始指向头结点s=p->next; //s最开始指向第一个节点while(s->next!=NULL)//只要没有到最后一个元素就继续。转载 2016-12-22 12:04:26 · 394 阅读 · 0 评论 -
链表、头指针、头结点
转自http://blog.csdn.net/zhenyusoso/article/details/6092843图1为线性表(ZHAO, QIAN, SUN, LI, ZHOU, WU, ZHENG, WANG)的逻辑状态。头指针指示链表中第一个结点(即第一个数据元素的存储映像)的存储位置。同时,由于最后一个数据元素没有直接后继,则线性链表中最后一个结点的指针为“空”(N转载 2016-11-16 23:04:54 · 391 阅读 · 0 评论 -
ArrayList和LinkedList的区别
转自http://blog.csdn.net/qianzhiyong111/article/details/6678035一般大家都知道ArrayList和LinkedList的大致区别:1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要转载 2017-01-03 11:15:13 · 262 阅读 · 0 评论 -
广义表的定义及用法
转自http://blog.csdn.net/fanzheng220112583/article/details/7719228广义表(Lists,又称列表)是线性表的推广。线性表定义为n>=0个元素a1,a2,a3,…,an的有限序列。线性表的元素仅限于原子项,原子是作为结构上不可分割的成分,它可以是一个数或一个结构,若放松对表元素的这种限制,容许它们具有其自身结构,这样就产生了广义表的概念转载 2016-12-29 16:39:26 · 2266 阅读 · 0 评论 -
静态链表、有序链表、广义表
静态链表是用数组存储节点数据,模拟链表的实现,但是没有用到指针。每个数组节点包括两部分:data域和cursor(游标)域。data存储数据,cursor指明下个元素在数组中的下标。(1)存取第i个元素时,需要从头遍历到i-1和元素,由第i-1个节点的cursor,才能知道第i个元素存储的位置,因此和i是相关的。(2)使用数组对元素进行存储,在定义时大小已经确定。 (3)插入和原创 2016-12-28 10:50:09 · 415 阅读 · 0 评论 -
判断两个单链表是否相交
转自https://zhidao.baidu.com/question/1689718158270538108.html方法一:直接法直接判断第一个链表的每个结点是否在第二个链表中,时间复杂度为O(len1*len2),耗时很大 方法二:利用计数如 果 两个链表相交,则两个链表就会有共同的结点;而结点地址又是结点唯一标识。因而判断两个链表中是否存在地址一致的节点,就可以知道是否相交了。转载 2017-01-04 15:29:09 · 673 阅读 · 0 评论 -
链表插入
1、插入(1)先操作插入点的左边,再操作插入点的右边。(2)某指针变量p指向双向链表中结点A,指针变量s指向被插入的结点X,则在结点A的后面插入结点X的操作序列为(先对插入点进行操作,然后操作右边,最后才操作左边)原创 2016-12-28 13:53:32 · 423 阅读 · 0 评论 -
栈增长方向与大端/小端问题
转自http://www.cnblogs.com/xkfz007/archive/2012/06/22/2558935.html栈增长和大端/小端问题是和CPU相关的两个问题。在内存管理中,与栈对应是堆。对于堆来讲,生长方向是向上的,也就是向着内存地址增加的方向;对于栈来讲,它的生长方式是向下的,是向着内存地址减小的方向增长。在内存中,“堆”和“栈”共用全部的自由空间,只不过各自的起始地址转载 2016-12-27 13:37:03 · 380 阅读 · 1 评论 -
用两个栈实现一个队列
转自http://www.cnblogs.com/wanghui9072229/archive/2011/11/22/2259391.html大多数人的思路是:始终维护s1作为存储空间,以s2作为临时缓冲区。入队时,将元素压入s1。出队时,将s1的元素逐个“倒入”(弹出并压入)s2,将s2的顶元素弹出作为出队元素,之后再将s2剩下的元素逐个“倒回”s1。见下面示意图:转载 2016-12-27 14:34:29 · 236 阅读 · 0 评论 -
为什么要设堆区和栈区
转自http://bbs.csdn.net/topics/390840859 要问Java为什么要堆栈,那就要问C为什么要堆栈,问C为什么要堆栈就要问以前写汇编的为什么写着写着就喜欢把内存分两块来用,至于这个问题你跑去C板块和汇编板块估计都没几个人能让你信服地说清楚原因。 首先汇编里,变量的概念几乎没有了,有的只是各种内存地址,不管是实地址还是虚地址转载 2016-12-27 14:57:48 · 4136 阅读 · 0 评论 -
折半查找法
原创 2016-12-28 13:21:59 · 482 阅读 · 0 评论 -
树
转自http://blog.csdn.net/xiazdong/article/details/7296257名词解释 树这个数据结构用到了递归的概念:树的子树还是树;度:节点的子树个数;树的度:树中任意节点的度的最大值;兄弟:两节点的parent相同;层:根在第一层,以此类推;高度:叶子节点的高度为1,根节点高度最高;有序树:树中各个节点是有次序的;森林转载 2016-12-27 16:16:10 · 341 阅读 · 0 评论 -
各排序算法链接
1、快速排序http://jingyan.baidu.com/article/95c9d20da1475dec4e75612f.html2、 选择排序http://wenku.baidu.com/link?url=8QWNtRoewPfofoZHMhYJ5aKsawm8tGN0G9yLvO6wWpVN0J4Cv5ApOlTsPRirgUASqkbeto4TeQoDi09t2pPZf7FOOAj原创 2017-02-14 09:14:47 · 369 阅读 · 0 评论