数据结构与算法
文章平均质量分 77
Neo Zhang
一名嵌入式的小学生阿~
展开
-
数据结构与算法——队列
1 概述先进先出(FIFO)的线性表队尾:插入元素;队首:删除元素抽象数据类型:queue ADTC++代码实现:template<class T>class queue{public: virtual ~queue() {} virtual bool empty() const = 0; // return true iff queue is em...原创 2019-05-27 13:21:52 · 308 阅读 · 0 评论 -
数据结构与算法——二叉树
1 树概述树:在层次化的数据元素之间有祖先-后代、上级-下属、整体-部分以及其他类似的关系。根和子树:树t为非空有限集合,其中一个元素为根,其余组成t的子树。级:树根为1级,其孩子是2级,孩子的孩子为3级,以此类推。高度(深度):树中级的个数。元素的度:其孩子的个数。树的度:其元素的度的最大值。2 二叉树特性及常用操作2.1 二叉树特性与普通树根本区别:(1)每个元素恰好有...原创 2019-05-27 16:29:12 · 358 阅读 · 0 评论 -
数据结构与算法——程序性能分析
程序性能分析1 什么是程序性能分类:空间复杂度时间复杂度分析方法:性能分析性能测量2 空间复杂度2.1 组成:(1)指令空间编译后的程序指令所占的空间;(2)数据空间a. 常量和简单变量;b.动态对象(动态数组、动态类等);(3)环境栈空间保存暂停的函数和方法在恢复运行时所需要的信息:a.返回地址b.正在调用的函数的所有局部变量值和形参的值将一个程序...原创 2019-05-23 16:07:34 · 869 阅读 · 0 评论 -
数据结构与算法——竞赛树
1 概述竞赛树分为赢者树和输者树,赢者树更直观,输者树实现更高效。比赛用二叉树来描述,每个外部节点表示一名选手,每个内部节点表示一场比赛,同一层内部节点代表一轮比赛,可以同时进行。如果竞赛树是完全二叉树,则对于n个选手的比赛,最少的比赛场次为log2nlog_2nlog2n。竞赛树不全是完全二叉树,但是完全二叉树可以是比赛的次数最少,竞赛树也成为选择树。2 赢者树2.1 定义...原创 2019-05-28 10:12:21 · 2321 阅读 · 0 评论 -
数据结构与算法——线性表(数组描述)
前言表ADT常用的描述方法有两种:数组描述和链式描述,在STL中分别有容器vector和list与之对应。本文重点讨论线性表的数组描述,通过利用C++语言从零开始实现数组描述的线性表,对其进行学习(所使用的函数名和签名与STL代码相同)。线性表也称有序表,其每一个实例均为元素的一个有序集合。元素被看做原子,其本身的结构与线性表的结构无关。线性表除了先后关系的有序性之外,不再有其他关系。表A...原创 2019-05-23 20:35:20 · 590 阅读 · 0 评论 -
数据结构与算法——栈
1 概述1.1 定义栈是一种特殊的线性表,插入(入栈或压栈)和删除(出栈或弹栈)都在同一端进行。这一端成为栈顶,另一端为栈底。下图为栈的示意图。1.2 抽象数据类型用c++语言实现上图stack抽象类,代码如下:template<class T>class stack { public: virtual ~stack() {} v...原创 2019-05-24 11:01:27 · 190 阅读 · 0 评论 -
数据结构与算法——优先级队列
1 概述优先级队列:出队列顺序由元素的优先级决定。堆:一棵完全二叉树,是实现优先级队列效率很高的数据结构。(STL类priority-queue是用堆实现的优先级队列)定义:优先级队列:0个或多个元素的集合,每个元素具有一个优先权或值。可完成操作:查找一个元素(top)、插入一个元素(push)、删除一个元素(pop)分类:最小优先级队列、最大优先级队列抽象数据类型:最大优...原创 2019-06-01 09:37:35 · 964 阅读 · 1 评论