数据结构

VTK008_vtk-数据结构及转换

戏子无情 提交于 2020-03-06 00:01:45
VTK数据结构: vtk可视化管线和渲染引擎是vtk最重要的两部分,具体而言,前者是用于读取数据处理数据,后者则是渲染数据,显示模型,在这之间,离不开vtk的数据结构。 可以认为数据结构是连接vtk可视化管线和vtk渲染引擎的桥梁 。 vtk数据都是vtkDataObject的子类,通常,我们不会直接使用vtkDataObject来实例化一个vtk数据,一般都是通过指定的数据读取类直接读取文件的数据,再通过接口获取读取到的数据,或者通过vtkDataObject的一些常用子类来实例化数据对象。 vtkDataObject: vtkDataObject有非常多的子类,数据类型也有差别,比较常用的vtk数据结构有:vtkPolyData,vtkImageData等。 vtkDataSet: vtkDataSet分为两个部分: 拓扑结构,几何结构 。 拓扑结构是用于描述物体的构成形式,几何结构是用于描述物体的空间位置关系 。 拿vtkPointSet举例:通俗的说,所有的点组成了几何结构,所有的点的连接关系组成了拓扑结构 。 数据集: vtkPolyData,我们使用最多的数据结构,实际上就是只有几何结构,没有拓扑结构的数据集,但是,通常来说,是需要拓扑结构的。如下,添加了vtkCellArray,即指定了顺序,如果去掉pPolyData->SetVerts(pCellArray);

【数据结构和算法】_09_广度 / 深度 优先搜索

a 夏天 提交于 2020-03-05 23:11:50
文章目录 【一】 Breadth - First Search (广度优先搜索) 【二】 Depth - First Search (深度优先搜索) 【三】 Interview (面试题) 【3.1】 LeetCode 102:Binary Tree Level Order (二叉树的层次遍历) 【3.2】 LeetCode 104:Max depth (二叉树的最大深度) 【3.3】 LeetCode 111:Min depth (二叉树的最小深度) 【3.4】 LeetCode 22:Generate Parentheses (括号生成) 【一】 Breadth - First Search (广度优先搜索) 比较符合人类的思维的,常用的,搜索算法,必须掌握 示意图( 树 ) 代码 (不仅适用于树,也适用于图) # python 广度优先搜索 def BFS ( graph , start , end ) : # 队列,先进先出 queue = [ ] queue . append ( [ start ] ) # visited 里的数据表示被访问过了 (对二叉树来说没必要) visited . add ( start ) # 当队列不为空时 while queue : # 将队列头元素取出 node = queue . pop ( ) # 放进被访问过的列表里 visited

数据结构题库

你。 提交于 2020-03-05 23:02:08
目录: 一:文档 【文档】清华数据结构习题集答案(C语言版严蔚敏).【113页】 【文档】自考数据结构02331历年试题及答案(2009--2015个人整理版【98页】 【文档】数据结构各章题库及答案【56页】 【文档】数据结构考试题库含答案整理版【55页】 【文档】十套数据结构试题及答案1【41页】 【文档】数据结构试题及答案【35页】 【文档】十套数据结构试题及答案(1)【24页】 【文档】数据结构试题库及的答案【20页】 【文档】数据结构期末考试题及答案【19页】 【文档】数据结构自考题汇总【18页】 【文档】数据结构试题及答案[1]【13页】 【文档】数据结构试题试题及答案1【7页】 =============================================================== 二:网站 【网站】算法与数据结构 【网站】PPKAO考试资源网 【网站】数据结构和算法动态可视化 (Chinese) 【网站】用python实现基本数据结构和算法 【网站】SORTING 【网站】刷了几千道算法题,我私藏的刷题网站都在这里了 一:文档 【文档】 清华数据结构习题集答案(C语言版严蔚敏).【113页】 https://wenku.baidu.com/view/c0b71f48852458fb770b566f.html 【文档】

数据结构——单链表

佐手、 提交于 2020-03-05 22:31:47
线性表的链式存储结构 目录 线性表的链式存储结构 单链表的相关运算 线性表基本运算在单链表上的实现 一道例题 在每个节点中除包含有数据域外,只设置一个指针域 ,用以指向其后继节点,这样构成的链接表称为线性单向链 接表,简称 单链表 ,为了便于插入和删除运算的实 现,每个链表带有一个头节点,并通过头节点的指针唯一标识该链表。 单链表的缺点 :当访问过一个节点后,只能接着访问它的 后继节点,而无法访问它的前驱节点。 单链表的相关运算 先定定义一下链表的结构体 typedef struct Lnode { int data ; struct Lnode * next ; } LinkList ; 插入和删除节点 插入节点 LinkList * p //这是指向原来在链表中的 LinkList s //这是需要被插入的节点 s - > next = p - > next ; p - > next = s ; //:只需修改相关节点的指 针域,不需要移动节点 删除节点 LinkList * p // 指向链表 假设需要被删的元素是指 的后驱元素 p - > next = p - > next - > next ; 建立单链表: 头插法建表 特点:新节点插入到当前链表的表头上,最后得到的链表是一个与插入顺序相反的链表 void CreateHeadList ( LinkList * & L ,

【数据结构与算法之美】排序优化:如何实现一个通用的、高性能的排序函数?

我与影子孤独终老i 提交于 2020-03-05 22:04:21
目录 一、如何选择合适的排序算法? 1.排序算法一览表 2.为什选择快速排序? 二、如何优化快速排序? 三、通用排序函数实现技巧 四、课后思考 一、如何选择合适的排序算法? 1.排序算法一览表 时间复杂度 是稳定排序? 是原地排序? 冒泡排序 O(n^2) 是 是 插入排序 O(n^2) 是 是 选择排序 O(n^2) 否 是 快速排序 O(nlogn) 否 是 归并排序 O(nlogn) 是 否 桶排序 O(n) 是 否 计数排序 O(n+k),k是数据范围 是 否 基数排序 O(dn),d是纬度 是 否 2.为什选择快速排序? 1)线性排序时间复杂度很低但使用场景特殊,如果要写一个通用排序函数,不能选择线性排序。 2)为了兼顾任意规模数据的排序,一般会首选时间复杂度为O(nlogn)的排序算法来实现排序函数。 3)同为O(nlogn)的快排和归并排序相比,归并排序不是原地排序算法,所以最优的选择是快排。 二、如何优化快速排序? 导致快排时间复杂度降为O(n)的原因是分区点选择不合理,最理想的分区点是:被分区点分开的两个分区中,数据的数量差不多。如何优化分区点的选择?有2种常用方法,如下: 1.三数取中法 ①从区间的首、中、尾分别取一个数,然后比较大小,取中间值作为分区点。 ②如果要排序的数组比较大,那“三数取中”可能就不够用了,可能要“5数取中”或者“10数取中”。 2.随机法

数据结构之链表

十年热恋 提交于 2020-03-05 19:51:04
文章目录 1.单链表 2.静态链表 3.循环链表 4.双向链表 5.优缺点 1.单链表 线性表的链式存储结构的特点是用一组任意的存储单元存储线性表的数据元素 有时,我们在单链表的第一个节点之前附设一个结点,称为头结点。它的数据部分是空的或者存储链表的长度,指针指向第一个节点的指针 单链表的定义 typedef int ElemType ; typedef struct { ElemType data ; Node * next ; } Node , * LinkList ; 给出索引得到对应单链表元素的值 由此可见存取元素比顺序线性表要麻烦 若1<i<n,则频度为i-1,否则为n,所以时间复杂度为O(n) bool GetElem_L ( LinkList & L , int i , ElemType & e ) { int j = 0 ; Node * p = L -> next ; while ( p && j < i ) { p = p -> next ; ++ j ; } if ( ! p ) return false ; e = p -> data ; return true ; } 实现单链表的插入 时间复杂度为: O(n) bool ListInsert_L ( LinkList & L , int i , ElemType e ) { int j ; Node *

数据结构之顺序线性表

风流意气都作罢 提交于 2020-03-05 18:22:58
文章目录 1.线性表的类型定义 2.线性表的顺序表示和实现 3.优缺点 1.线性表的类型定义 线性表是n个数据元素的有限序列 在稍微复杂的线性表中,一个数据元素可以由若干个数据项组成,在这种情况下,常把数据元素称为记录,含有大量记录的线性表又称文件。 若将线性表记为: (a 1 ,…,a i-1 ,a i ,a i+1 …a n ) 其中a i-1 是a i 的直接前驱元素,a i+1 是a i 的直接后继元素 2.线性表的顺序表示和实现 线性表的顺序表示指的是用一组地址连续的存储单元依次存储线性表的数据元素 只要确定了存储线性表的起始位置,线性表中任一数据元素都可以随机存起,所以线性表的顺序存储结构是一种随机存取的存储结构 顺序线性表的定义 # define LIST_INIT_SIZE 100 //初始大小 # define LIST_INCREMENT 10 //分配的增量 typedef int ElemType ; typedef struct { ElemType * elem ; //存储首地址 int length ; //当前长度 int listsize ; //当前分配的存储容量 } SqList ; 顺序线性表的初始化 bool InitList_Sq ( SqList & L ) { L . elem = ( ElemType * ) malloc (

数据结构之绪论

会有一股神秘感。 提交于 2020-03-05 16:20:07
文章目录 1.基本概念和术语 2.算法和算法分析 1.基本概念和术语 数据:对客观事物的符号表示,在计算机科学中是指所有能输入到计算机并被计算机程序处理的符号的总称 数据元素:数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。 数据对象:性质相同的数据元素的集合,是数据的一个子集 数据结构:相互之间存在一种或多种特定关系的数据元素的集合 存储结构:数据结构在计算机中的表示,包括数据元素的表示和关系的表示,有顺序存储结构和链式存储结构 数据类型:刻画操作对象的特性 抽象数据类型:指一个数学模型以及定义在该模型上的一组操作 2.算法和算法分析 算法的五个特性: 有穷性 确定性 可行性 有输入 有输出 算法设计的要求 正确性 可读性 健壮性 效率与低存储量需求 算法效率的度量 事后统计的方法 缺点:一是先必须运行依据算法编制的程序;二是所得时间的统计量依赖于计算机的硬件、软件等环境因素。 事先分析估算的方法 一个算法是由控制结构(顺序、分支和循环3种)和源操作(指固有数据类型的操作)构成的,则算法时间取决于两者的综合效果。通常的做法是,从算法中选取一种对于研究的问题来说是基本操作的原操作,以该基本操作重复执行的次数作为算法的时间量度。 算法的渐进时间复杂度,简称时间复杂度:T(n) = O(f(n)) 算法的空间复杂度:S(n) = O(f(n))

第二节 redis的数据类型和一些通用的键命令

廉价感情. 提交于 2020-03-05 15:08:13
数据结构   Redis是key-value的数据结构,每条数据都是一个键值对   键的类型是字符串   注意:键不能重复 值的类型分为5种:   字符串 string   哈希 hash   列表 list   集合 set   有序集合 zset    常用键命令    Redis命令参考文档:http://doc.redisfans.com   key* 查看当前库的所有键   key a* 查看名称中包含a的键   exists key 判断键是否存在,存在返回1,不存在返回0   type key 查看键对应的value的类型   del key1 key2 key3... 删除键及对应的值   expire key seconds 对已存在的键设置过期时间,以秒为单位,如果没有指定过期时间则一直存在,知道被del   ttl key 查看剩下的有效时间,以秒为单位 来源: https://www.cnblogs.com/kogmaw/p/12419932.html

01数据结构——绪论

拥有回忆 提交于 2020-03-05 14:26:16
一、数据结构绪论 1.1 数据结构 数据结构 是一门研究非数值计算的程序设计问题中的操作对象,以及它们之间的关系和操作等相关问题的学科。 1.2 基本概念和术语 数据 数据 是描述 客观事物 的符号,是计算机中可以 操作的对象 ,是能被计算机识别,并输入给计算机处理的 符号集合 。 数据不仅仅包括整形、实型等数值类型,还包括字符及声音、图像、视频等非数值类型。 数据元素 数据元素 是组成数据的、有一定意义的 基本单位 ,在计算机中通常作为整体处理,也被称为 记录 。 比如动物类中,牛、马、羊、鸡、鸭、鹅就是其数据元素。 数据项 一个 数据元素 可以由若干 数据项 组成。数据项是数据不可分割的 最小单位 。 比如人这样的数据元素,有眼、耳、鼻、口、手、脚这些数据项,也可以有姓名、年龄、性别、出生地址、联系电话等数据项,具体哪些数据项,要根据你的系统决定。 数据对象 数据对象 是性质相同的 数据元素的集合 ,是 数据的子集 。 所谓性质相同,是指数据元素具有相同数量和类型的数据项,比如人都有姓名,性别,生日等相同的数据项。 数据结构 数据结构 是相互之间存在 一种或多种 特定关系的 数据元素的集合 。 研究数据结构的意义: 在计算机中,数据元素不是孤立、杂乱无序的,而是具有内在联系的数据集合。数据元素之间存在的一种或多种特定关系,也就是数据的组织形式。为编写一个好的程序