数据结构与算法分析
a949002654
这个作者很懒,什么都没留下…
展开
-
链表数组
在使用二项队列时,需要先建一个二项树的数据结构,还要再建一个森林来储存这些二项树,所以就要建二项树数组(说的有点别扭,不知怎么表达才好,直接看定义),定义如下所示:typedef struct BinNode * BinTree; typedef struct Collection* BinQueue; struct BinNode{ int Element; Position L原创 2016-11-02 23:48:18 · 2553 阅读 · 0 评论 -
排序
注意本文数组开头元素为第0个元素 一、插入排序 思想:从第一个元素开始,判断这个元素该处位置,也就是要跟前面的元素比较大小(此时前两个元素已拍好序),接着第二个元素同样执行此步骤,那样一来,当判断第P个元素所处位置时,0~P-1个元素就已经拍好序了,那么只需要从P开始往前判断,插入到P该处的位置便完成前P个元素的排序,因为这相当于一个一个元素往数组里面插入,所以叫插入排序。void Insert原创 2016-11-03 16:26:48 · 316 阅读 · 0 评论 -
二叉树的各种遍历方法
根据不同要求二叉树有不同的遍历方法,主要有先序遍历(深度优先),中序遍历,后续遍历,广度优先……因为使用二叉树时经常用到树的遍历,便写下这篇文章,以供自己日后查看和需要的人学习。 先序遍历(深度优先),中序遍历,后续遍历,这四种遍历主要是用到递归算法,程序较为简单,而广度优先则需要借助队列来完成。 1、先序遍历 遍历顺序为:ABDECF 代码为:void PreorderTraversa原创 2016-10-30 23:48:47 · 287 阅读 · 0 评论 -
二叉堆
一、定义 1、二叉堆是一棵被完全填满的二叉树(除了底层,底层的元素从左到右依次填入); 2、二叉堆具有堆序性质(即具有最小权值的堆元素处在树根位置,父节点权值小于等于子节点的权值);二、二叉堆实现 因为二叉堆的堆序性质,所有可用来实现按权值优先输出的优先队列。此外,因为二叉堆是满二叉树,所以当用数组来存储堆元素时,父子节点间有银行关系,若父节点在数组中的位置为i,则左子节点在数组中的位置为2*原创 2016-11-01 14:29:01 · 396 阅读 · 0 评论