数据结构
文章平均质量分 60
F5的救赎
这个作者很懒,什么都没留下…
展开
-
插入排序与希尔排序
插入排序插入排序是基于减治法的一种排序算法,其思想是若对N个数进行排序,假设前N-1个数已经有序,只需要将最后一个元素插入到合适的位置即完成排序。虽然思想更接近于使用递归,但是使用迭代却又更高的效率。使用迭代来实现插入排序,首先将数组第一个元素当做一个有序队列,然后将第二个元素当做插入元素插入,插入第三个元素时,前面两个当做有序序列进行插入,然后依次顺推,直到最后一个元素完成插入。下面是代码:vo原创 2016-11-29 13:27:31 · 414 阅读 · 0 评论 -
两个非递减有序集合合并为一个非递减有序集合
已知线性表LA和LB中的数据元素或是按值非递减有序排列,现要求将LA和LB合并为一个新的线性表LC,且LC中的元素要求同样按值非递减排列。上述问题是数据结构(C语言)上的一个线性表的合并问题,这里使用C++的一些东西来完成它。void MergeList(const vector<int>&la,const vector<int>&lb,vector<int>&lc){ vector<in原创 2016-11-22 11:03:29 · 6605 阅读 · 0 评论 -
一元多项式的表示和相加
一元多项式的表示和相加是数据结构(C语言)中的一个简单的问题,这里我们用C++的一些东西来实现它。(简洁版)首先是表示多项式,多项式有一些列的单项组成,每一项都有系数和指数两个量,考虑到多项式的长度和指数的不确定性,显而易见,应该使用链表来存储它。由上面的叙述很容易得到单项的结构:struct Poly{ int first; int second; Poly *next;原创 2016-11-24 11:07:31 · 6414 阅读 · 0 评论 -
数组实现循环队列
队列可用链表来实现,实现也很简单。但是队列也可用数组来实现,使用循环数组比链表有更高的效率。由于循环数组的特殊性,一个循环数组中必须空出一个位置,不然无法判断队列是否为空或者为满的。循环数组来实现队列的难点便在索引的值,我们要把数组当做一个圆来看,当索引来到数组的0或者最后一个位置时,必须能够得到正确的索引。下面是类声明,这只是简化版的:class Queue{public: Queue原创 2016-11-24 15:12:56 · 1400 阅读 · 0 评论 -
使用C++实现赫夫曼树
赫夫曼的作用和效果这里不再叙说,这里只是我的实现。实现原理在数据结构(C语言版)中有详细的描述关于如何创建一颗赫夫曼树,也就是赫夫曼算法:**(1)根据给定的n个权值构成n棵二叉树集合F,每棵二叉树的左右节点为空。 (2)在F中选取两棵根节点的权值最小的树作为左右子树构造一棵新的二叉树,且置新的二叉树的根节点的权值为其左右子树上根节点的权值之和。 (3)在F中删除这两棵树,同时将新得到的二叉原创 2016-11-28 11:00:44 · 1107 阅读 · 0 评论 -
Openstack之Nova创建虚机流程分析
前言 Openstack作为一个虚拟机管理平台,核心功能自然是虚拟机的生命周期的管理,而负责虚机管理的模块就是Nova。本文就是openstack中Nova模块的分析,所以本文重点是以下三点: 先了解Openstack的整体架构,搞清楚为什么要用这样的架构;然后再了解架构中的各个组件,组件提供的主要功能与各个组件之间的交互;了解虚机的启动过程,能在遇到问题时发现问题出在哪个模转载 2017-09-16 13:36:00 · 759 阅读 · 0 评论