数据结构复习(停)
呜呜呜
把充的钱学会来
ckc混合班 cs+金融 想当卷王的菜鸡
展开
-
ADT复习##从满二叉树到堆
链表和数组的取舍: 尽管链表有许多方便之处(至少许多用链表做的题我愿意顶着麻烦用链表写而不是用许多数组做一些复杂的操作来做) 从某种程度上说,手写链表的繁琐带来的是算法上的莽撞,这固然不用太费脑力,但是却容易“运行超时”。 作为最初级的数据结构,我认为数组可以通过查找的O(1)的优势来出其不意解决一类问题。 那么运用数组巧妙解决问题的情况,我认为有以下几个先决条件: 1、内存卡得不紧,以存放我们用于储存各种各样得对应关系得信息得数组 2、有充分得限制使得每个元素有比较明显得特征,从而能对应到一个数组上去,并原创 2020-11-25 00:17:03 · 57 阅读 · 0 评论 -
复习##ADT4树(一)树的定义和遍历问题
ADT4树(一)树的定义和遍历问题 我们每天都会重复边吃饭边看手机的活动,或者说边写作业边听音乐。 这其实有多线程的影子。 当然我们要总结的不是并行计算,只是有类似的”分治“想法的数据结构:树 其实我们讨论二叉树就足够了,因为普通的树可以通过旋转得到二叉树,只是可能需要做一些平衡的操作。 但还是复习一下普通的树 typedef struct Treenode *Tree; struct Treenode{ Tree Firstchild; Tree NextSiblings; Element Data原创 2020-11-21 16:40:44 · 125 阅读 · 0 评论 -
复习##ADT3队列
ADT3队列 队列是一个较为简单的ADT,它满足先进先出的原则 实际上队列用链表来表示是非常方便的,但我们的直观印象还是数组或者是循环数组。教材上说队列可以在概率论中有一些应用,挺神奇的还是 我们以数组为例: 队列的ADT中最主要的是两个指针(不一定是真的指针,就是标记位置的变量即可)Rear和Front,以及储存数据的数组。 入队的时候Rear后移一位,并把数据存入到当前的位置; 出队的时候Front指向的位置的元素被弹出,Front后移一位; 在这种思路下,我们初始化的时候Front最好置为1,Rear原创 2020-11-21 16:13:42 · 73 阅读 · 0 评论 -
复习##栈ADT2
栈ADT 栈的结构一直伴随着我们,像递归函数的调用就依靠着栈来实现 栈大致可以分为两种类型: 数组实现和纯链表实现。 一般采用数组实现:因为更接近栈的抽象结构图,而且实际上也不太需要考虑空间大小的问题 需要注意的是,在实现的时候我们尽量要用ADT的风格来编写 struct stack{ int capacity; int Topofstack; int *Array; } typedef struct stack *Stack; 我们经常用到的函数有 ISEmpty、IsFull:这两个函数在栈里面原创 2020-11-21 15:23:27 · 84 阅读 · 0 评论 -
复习##ADT1:链表
ADT1:链表 大一下学链表的时候大致讲了这样几种分类: 1、有无哨兵节点 2、是否是双向链表 3、有两个头节点还是一个头节点 事实上,最后用的最多的还是单头单链有哨兵的类型 大一的时候链表一般用于不确定输入数据量的时候(不老实的话可以数组空间MAXSIZE开大点,然后初始化为0或者用static类型,然后用EOF来输入) 学ds之后,链表成了很多ADT的表示形式,因为其”指向下一个数据“的特征 主要的操作有: MakeEmpty:开个空链表 IsEmpty:检查是否为空 Insert:插入节点 Delet原创 2020-11-21 14:29:55 · 118 阅读 · 0 评论 -
复习##算法复杂度
数据结构复习 第一章:算法复杂度 数学基础: 1、递归与递推的基础 2、O(n)代表cn,表示一个趋势,一般指一个for循环 3、一般看最高的项的次数 分析基础: 1、每一条语句看作常数 2、循环n次就乘以n 所以我们主要关注循环的层数 复杂度主要分类: 1、最坏的情况 2、最优的情况 3、平均的情况 另一种分类: 加权的时间复杂度 平均的加权时间复杂度 ...原创 2020-11-20 23:41:45 · 116 阅读 · 0 评论