博客专栏  >  综合   >  数据结构

数据结构

该专栏总结Fundamentals Of Data Structures in C书籍的笔记,该书详细介绍各种数据结构算法的应用以及实现。

关注
2 已关注
24篇博文
  • 静态散列

    散列基础知识在静态散列方法中,把标识存储在一个固定大小的表中,使用一个函数f确定标识符x在散列表中的地址(或位置),散列表ht存放在一片连续的内容空间中,该空间被分割为b个散列通:ht[0],….,h...

    2015-11-18 14:42
    1196
  • 基数排序

    基数排序是把一个逻辑关键字看成是由多个关键字组合而成的,并且一步一步地按每个关键字排号顺序,如把这些关键字记为:K0K^0,K1K^1,…,Kr−1K^{r-1},其中K0K^0为该记录中最高有效关键...

    2015-11-14 20:11
    1488
  • 归并排序

    在归并排序的迭代算法中,可以把输入序列看成是个n个已排序序列,其中每个序列的长度为1,将这些序列两两归并就得到了 n/2个长度为2的序列(如果n为奇数,则有一个序列长度为1),然后对这n/2这个序列进...

    2015-11-14 11:03
    1015
  • 快速排序

    快速排序根据整个文件,把控制当前排序进程的基准关键字放在正确的位置上,在快速排序总,如果把关键字k1k_1放置在位置s(i)s(i)处,那么,当j<s(i)s(i)时,则有kj<=ks(i)k_js(...

    2015-10-27 14:09
    736
  • 插入排序

    初始时,有序序列为R0R_0,有序序列R0R_0,然后依次插入R1R_1,R2R_2,…,Rn−1R_{n-1},由于每次插入都使得结果序列是有序,故叫插入排序,其实时间复杂度:O(∑i=0n−1i)...

    2015-10-27 12:58
    397
  • 表验证

    通常,我们需要比较表来验证他们是否相同,或者找出相异的元素,因此表验证问题实际上就是把一个表的每个关键字作为待查关键字,对另一个表进行重复查找,这里可以用随机表和有序表来设计表验证算法,假设有两个表l...

    2015-10-26 14:18
    356
  • 顺序查找

    假定有一个表list和一个待查找关键字searchnum,要找到表中关键字与 searchnum相匹配的记录,如果表中list有n个记录,且list[i].key表示记录i的关键字值,可以通过依次检查...

    2015-10-26 14:20
    465
  • 二分法查找(折半查找)

    顺序查找并没有对表中的关键字域的顺序做出任何假设,与顺序查找不同,在折半查找中,表中的记录是按关键字域有序排列的,其比较会出现下面三种结果: searchumn< list[middle].key,...

    2015-10-26 13:18
    1145
  • 最小生成树

    一颗带权无向图的生成树的代价是该生成树中所有边的代价之和,最小代价生成树就是一颗代价最小的生成树,构建无向图的最小生成树就是采用贪心算法,不过对于最小生成树问题,需满足以下约束条件: 只能使用图中的边...

    2015-10-24 13:27
    419
  • 生成树

    生成树:如果连通图G的一个子图是一棵包含G的所有顶点的树,则该子图称为G的生成树(SpanningTree)。 生成树是连通图的包含图中的所有顶点的极小连通子图,图的生成树不惟一(极小子图是指边数...

    2015-09-30 10:53
    1057
  • 图的深度优先搜索和广度优先搜索

    深度优先搜索首先访问起始顶点v,这里假设访问只是输出结点所对应的顶点序号字段,然后,从顶点v的邻接表中选取一个未访问过的顶点w进行访问,并从w开始继续进行深度优先搜索,将v的邻接表中的当前位置保存在一...

    2015-09-21 16:26
    824
  • 完全图是具有最多边数的图,一个具有n个顶点的完全无向图,其边数为n(n-1)/2,而一个具有n个顶点的完全有向图,其边数为n(n-1). 一条简单路径是指路劲上除了起点和终点可能相同外,其余顶点都互...

    2015-09-20 14:39
    822
  • 森林

    森林是n>=0个互不相交的树的集合,如:二叉树删除一个根,就可以转换为森林。 如果T1,….Tn是一个森林,则对应于该森林的二叉树记为B(T1,…..,Tn),那么就有以下定义: 若n=0,森林就...

    2015-09-09 19:19
    976
  • 二叉查找树

    虽然在需要优先级队列的应用程序中,堆非常合适,但它并不适用删除任意元素的应用,从具有n个元素的堆中删除任意元素的时间开销为O(n),并且查询任意元素的时间开销也是O(n),因此当进行插入,删除和查找操...

    2015-09-08 09:12
    822
  • 最大堆:是指在一颗完全二叉树中,一个结点的关键值都不小于其儿子结点的关键字值,既满足(parent.value>=parent->left_child.value&&parent.value>=par...

    2015-09-03 02:09
    448
  • 线索二叉树

    二叉树在连接存储表示中,空链的数目是大于非空链的数目,即在2n个空链中,有n+1个是空链,如果利用这些空链来指向二叉树其他结点的指针,这结点称为线索,具体建立线索树过程: 如果结点的左儿子ptr->l...

    2015-08-31 16:53
    448
  • 二叉树的其他操作

    二叉树一个较实用的操作就是二叉树的复制,而二叉树的复制可以在后序遍历基础上实现。 代码实现://二叉树的复制操作 tree_pointer copy(tree_pointer original) {...

    2015-08-31 14:08
    305
  • 双向链表

    双向链表容易查找前驱和后驱的结点,在双向链表中至少有三个域:左链域,数据域,右链域,该结构如图: 根据上面的结构我们可以知道一条关系:ptr=ptr->llink->rlink=ptr->rli...

    2015-08-25 01:17
    407
  • 树的基本概述

    一个结点的度是指该结点的子树个数,而树的度是树中所有结点的度的最大值,数的层规定根结点为第一层,其他所有结点的层都是其父结点的层号加1,树的高度或深度是树中所有结点的最大层号。 二叉树的性质: 在二...

    2015-08-27 13:30
    316
  • 动态链栈和动态链队列

    动态链栈可以动态申请空间,它不像数组那样,存在有效的顺序储存,它是由一种链表数据结构搭建起来,故在插入和删除效率比数组搭建的方式要高,其链表构建的栈如图: 假设每个栈的初始状态是: top[i...

    2015-08-18 13:18
    455

img博客搬家
img撰写博客
img发布 Chat
img专家申请
img意见反馈
img返回顶部