随笔分类 - 数据结构
摘要:王道考研笔记 知识总览 初始化队列操作: 创建队列我们需要定义两个变量front,rear用于标记对头和队尾,初始化时让front和rear都指向data[0]。 入队操作: 正常来说我们可能会想到队列已满时的条件是rear==Maxsize,但是这个方式如果放在栈中是行的通的。可在队列中如果出队那
阅读全文
摘要:王道考研笔记 知识总览: PS:数据结构三要素——逻辑结构,数据的运算,存储结构(物理结构) 队列的定义: 线性表时具有相同数据类型的n(n>=0)个数据元素的有限序列,其中n为表长,当n=0时线性表示一个空表。 若用L命名线性表,则一般表示为 栈(Stack)是只允许在一段进行插入或删除操作的线性
阅读全文
摘要:王道考研笔记 知识总览: 顺序栈的定义: 下图中top变量是用来指向栈顶元素的,top=4是数组的下标 初始化操作: 在初始化操作中,因为top指针是用于指向栈顶的,可此时data[0]并没有任何元素,所以S.top=-1。因此我们在判断栈是否为空的时候,只需判断top=-1就行了。 进栈操作: 下
阅读全文
摘要:王道考研笔记 知识总览 栈的定义: 线性表:是具有相同数据类型的n(n>=0)个数据元素的有限序列,其中n为表长,当n=0时线性表是一个空表。若用L命名线性表,则其一般表示为 L=(a1,a2,.....ai,ai+1,an)。 栈(Stack):是只允许在一端进行插入或删除操作的线性表。也就是说栈
阅读全文
摘要:王道考研笔记 顺序表和链表的比较我们可以从以下三个方面去思考 1.逻辑结构 2.物理结构/存储结构 3.数据的运算/基本操作 1.逻辑结构 无论是顺序表还是链表都属于线性表,都是线性结构有着一对一的关系。 2.存储结构 顺序表:顺序存储每个结点分配的大小是相等的,因此我们只需要知道顺序表的起始地址就
阅读全文
摘要:此小结为王道考研的笔记 知识总览: 本小节主要讲解循环单链表和循环双链表的原理 循环单链表: 单链表:表尾结点的next指针指向null。 循环单链表:表尾结点的next指针指向头结点。 结合下图就能很快的理解 当我们想知道某个结点P是否为循环单链表的表尾结点,我们只需判断P的指针是否指向表头就可以
阅读全文
摘要:本内容来自王道考研,为复习笔记 本章主要描述双链表与单链表之间的不同,且双链表的实际操作。 单链表VS双链表: 单链表在我们之前的学习中已经了解到它的局限性,虽然可以完成修改,插入,查询和删除等操作,但是其单向性始终犹如一个裹脚布般放不开手脚。 双链表就很好的摆脱了单向性特点,使得表的修改,插入,查
阅读全文
摘要:知识总览 按位查找: 下题中假设i=8时,当循环到第五次时超出链表长度返回为null 封装(基本操作)的好处:避免重复代码,简洁,易保护。封装的代码我们应该时刻考虑代码的健壮性,就是要考虑代码的边界在哪。 按值查找: 当我们传入一个数值想找到这个数值的所在位置。我们应该用怎样的方法去实现。 求表的长
阅读全文
摘要:王道考研笔记 本小结我们将学习单链表的建立。 单链表的建立有两种常用的方法:尾插法,头插法。(本节探讨带头结点的情况) Step1:初始化一个单链表。 Step2:每次取一个数据元素,插入到表尾/表头。 尾插法建立单链表: 下图中的方法是通过While循环从表头的位置依次往后遍历直到最后一个节点,当
阅读全文
摘要:知识总览 按位序插入(带头结点) 注意:p=p->next是表示修改指针p的位置,把p指向原来的下一个节点。 当插入链表中的第一个结点时: 指定结点的后插操作 指定结点的前插操作 假设给个未知数P,如何找到P结点的前驱结点?因为单链表只能从前往后查找不能从后往前查找,所以p结点之前的区域都是未知的
阅读全文
摘要:单链表的定义: 学习单链表带着以下三个点进行学习 什么是单链表: 顺序表和单链表有什么区别?分别有哪些优缺点? 用代码定义一个单链表: 不带头节点的单链表: 带头结点的单链表: 不带头结点 与 带头结点: 总结:
阅读全文
摘要:顺序表的定义: 顺序表——用顺序存储的方式实现线性表栓徐存储。把逻辑上相邻的元素存储在物理位置上也相邻的存储单元中,元素之间的关系由存储单元的邻接关系来体现 顺序表的实现——静态分配:(静态分配是将顺序表一次性开辟一个连续的空间,这些空间一旦确定则不可改变空间大小) 顺序表的实现——动态分配 顺序表
阅读全文
摘要:注:数据结构三要素——逻辑结构,数据运算,存储结构(物理结构) 线性表的定义: 线性表是具有相同(每个数据元素所占的空间一样大)数据类型的n(n>=0)个数据元素的有限序列(有次序),其中n为表长,当n=0时线性表是一个空表。 若用L命名线性表,则其一般表示为L=(a1,a2,a3...ai,ai+
阅读全文
摘要:程序运行时的内存需求: 空间复杂度: 函数递归调用带来的内存开销: 总结:
阅读全文
摘要:如何评判时间开销? 算法的时间复杂度: 在这个程序我们假设每一行的时间开销是1ms,计算每一行的调用次数并获得时间总和,我们可以看到loveYou()这个算法的 时间开销与问题规模n的关系为T(n)=3n+3 问题来了时间开销的时间是否需要十分精确或者说是否可以忽略表示式某些部分呢? 答:是可以的,
阅读全文
摘要:1.什么是算法? 举个例子从1加到100,最简单的算法我们可以一个数一个数的累加得出答案,但是如果从一加到1000呢,一个个的加要加到什么时候。所以这个算法效率低,花费的时间长。 如果我们引入一个公式(n+1)*n/2,那么我们得出结果的效率就会大大的提升。所以我们可以将算法理解成一个思路或者一个公
阅读全文
摘要:基本概念 数据:数据是信息的载体,是描述客观事物属性的数据,字符及所有能输入到计算机中并被计算机程序识别和处理的符号的集合。 数据元素,数据项:数据元素是数据的基本单位,通常作为一个整体进行考虑和处理。 一个数据元素可由诺干数据项组成,数据项是构成数据元素的不可分割的基本单位。 结构:各个元素之间的
阅读全文

浙公网安备 33010602011771号