
数据结构(考研)
文章平均质量分 67
以408考研数据结构内容为主
深海里的鱼(・ω<)★
这个作者很懒,什么都没留下…
展开
-
【23考研】408代码题参考模板——二叉树
标红色的为必须掌握有多个模板的只要掌握一种即可。非递归不要求,看不懂算了!!!原创 2022-08-05 15:52:19 · 4069 阅读 · 7 评论 -
【23考研】408代码题参考模板——栈和队列(C++STL)
队列对应的结构体为queue,同栈一样需要在尖括号中指明队列中需要存放的元素类型。//定义一个存放int类型元素的队列。原创 2022-08-03 04:45:34 · 3463 阅读 · 1 评论 -
【23考研】408代码题参考模板——链表
单链表标红色的为必须掌握有多个模板的只要掌握一种即可。单链表单链表结点结构体其中数据域data的类型可以根据需要修改成其他的。单链表中间插入结点。原创 2022-07-29 21:50:33 · 4743 阅读 · 2 评论 -
【23考研】408代码题参考模板——顺序表
标红色的为必须掌握有多个模板的只要掌握一种即可。原创 2022-07-26 16:43:19 · 6708 阅读 · 4 评论 -
【23考研】计算机408数据结构代码题强化阶段划重点(王道书)
本篇只适合考408的同学,请自主命题的同学自觉右上角×掉因为王道书为了照顾自主命题的同学,所以很多算法也给出了代码实现,实际上对于考408的同学,很多代码是不需要掌握的,毕竟408的代码题没有像自主命题有些挖的那么深,那么难。对于顺序表,一般情况下不需要使用结构体包起来,直接使用数组就行传参时只需传一个数组名,一个数组中元素个数就行了2.2.2顺序表上的基本操作的实现p15增删改查,此处查找指的是顺序查找单链表的话这个结构体就需要掌握了头插法(可以用于链表逆置),尾插法,单链表的遍历,插入结点,删除原创 2022-07-04 15:12:46 · 12480 阅读 · 7 评论 -
2014计算机统考408算法代码大题
二叉树的带权路径长度(WPL)是二叉树中所有叶结点的带权路径长度之和。给定一棵二叉树T,采用二叉链表存储,节点结构如下:对于递归不熟练的同学可以采用以下思路题干说明了计算WPL用的是叶子结点,所以我们就可以用下面这个框架对叶子结点和分支结点进行不同的操作由于根节点到叶子结点的路径长度与叶子结点所在的深度有关,路径长度=深度-1,所以我们遍历到某个叶子结点的时候还需要知道其深度,计算某个结点的深度可以用一个全局变量,当进入一个新的结点的时候,深度+1,当回到父节点的时候,深度-1。对于分支节点,我们不原创 2022-03-04 15:40:32 · 1231 阅读 · 0 评论 -
408算法题排序模板
重点记忆快速排序冒泡排序void swap(int &x,int &y){ int temp=x; x=y; y=temp;}void bubblesort(int *x,int len){ int i,j; for(i=0;i<len-1;i++) { for(j=0;j<len-i-1;j++) { if(x[j]>x[j+1]) swap(x[j],x[j+1]); } }}选择排序void swap(in原创 2021-11-29 13:08:47 · 3454 阅读 · 0 评论 -
(转载)十字链表法,十字链表压缩存储稀疏矩阵详解
原文链接:http://data.biancheng.net/view/186.html对于压缩存储稀疏矩阵,无论是使用三元组顺序表,还是使用行逻辑链接的顺序表,归根结底是使用数组存储稀疏矩阵。介于数组 “不利于插入和删除数据” 的特点,以上两种压缩存储方式都不适合解决类似 “向矩阵中添加或删除非 0 元素” 的问题。例如,A 和 B 分别为两个矩阵,在实现 “将矩阵 B 加到矩阵 A 上” 的操作时,矩阵 A 中的元素会发生很大的变化,之前的非 0 元素可能变为 0,而 0 元素也可能变为非 0 元素转载 2021-02-25 19:10:05 · 1476 阅读 · 1 评论 -
考研中递推函数求法的几种代码实现(以斐波那契数列为例)
概念斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:F(n)={0,n=01,n=1F(n−1)+F(n−2),n≥2,n∈N∗F(n)=\left\{\begin{array}{c}0, n=0 \\1, n=1 \\F(n-1)+F(n-2原创 2021-02-25 16:55:32 · 707 阅读 · 0 评论 -
(笔记)前缀,中缀,后缀表达式
这一部分是王道书上没有的内容,根据视频内容整理概念Reverse Polish notation 逆波兰表达式(后缀表达式)Polish notation 波兰表达式(前缀表达式)中缀表达式:运算符在两个操作数中间,(如:a+b)后缀表达式:运算符在两个操作数后面,(如:ab+)前缀表达式:运算符在两个操作数前面,(如:+ab)转换和计算中缀表达式转后缀表达式(手算)①确定中缀表达式中各个运算符的运算顺序(运算顺序不唯一,因此对应的后缀表达式也不唯一)②选择下一个运算符,按照(左操作数原创 2021-02-23 19:05:55 · 1943 阅读 · 2 评论 -
2019计算机考研408数据结构大题代码实现
题目【2019统考真题】请设计一个队列,要求满足:①初始时队列为空;②入队时,允许增加队列占用空间;③出队后,出队元素所占用的空间可重复使用,即整个队列所占用的空间只增不减;④入队操作和出队操作的时间复杂度始终保持为O(1)O(1)O(1)。请回答下列问题:1)该队列是应选择链式存储结构,还是应选择顺序存储结构?2)画出队列的初始状态,并给出判断队空和队满的条件。3 )画出第一个元素入队后的队列状态。4)给出入队操作和出队操作的基本过程。王道给出的解答1)顺序存储无法满足要求②的队列占用空间原创 2021-02-22 18:24:00 · 5263 阅读 · 11 评论 -
【队列】队头指针队尾指针指向类题目总结
引入众说周知,在队列的题目中,队头指针(front)和队尾指针(rear)有两种指示方法。(1)队头指针①指向队头元素②指向队头元素元素的前一个位置(2)队尾指针①指向队尾元素②指向队尾元素的后一个位置指示方法不同元素入队和出队操作也不同,但是在做大部分题目的时候,我们并不需要分析队头指针和队尾指针具体操作,我们只要记住下面两个结论就行结论结论一:当队列执行元素入队操作时,队尾指针(rear)向后移,队头指针(front)不变结论二:当队列执行元素出队操作时,队头指针(front)向后原创 2021-02-21 21:10:25 · 21810 阅读 · 5 评论 -
用结论和画图快速秒杀判断出栈序列是否合法这一类题
相信大家在做和栈相关的题目的时候会遇到判断一个序列是否是合法的出栈序列这一类题,模拟栈的操作是标准解法,但是基础较差的同学可能模拟的时候容易出错,下面我给大家介绍两个结论和一些小技巧用于快速准确的秒杀这类题。结论下面我们先给出结论。结论一:出栈序列中的每个数后面的比它小的数,是按递减排列的。结论二:最大连续退栈次数等于最长连续递减序列。实战可能有些人不理解,我们给出两道例题来理解这两条结论例1:设a,b,c,d,e,fa,b,c,d,e,fa,b,c,d,e,f以所给的次序进栈,若在进栈操作原创 2021-02-19 23:06:44 · 624 阅读 · 0 评论 -
n个不同元素进栈,求出栈元素不同排列的个数
n个不同元素进栈,求出栈元素不同排列的个数?假设f(n)f(n)f(n)为nnn个不同元素进栈,出栈元素不同排列的个数。定义f(0)=1f(0)=1f(0)=1那f(1)f(1)f(1)表示只有111个元素进栈,假设元素时aaa,那么出栈元素的顺序只能是(a)(a)(a)所以f(1)=1f(1)=1f(1)=1当n=2n=2n=2时,假设元素为a,ba,ba,b,那么出栈元素的顺序为(ab),(ba)(ab),(ba)(ab),(ba)两种所以f(2)=2f(2)=2f(2)=2当n=3n=3n原创 2021-02-19 21:05:52 · 9530 阅读 · 1 评论 -
22王道数据结构P39T24
22王道数据结构P39T24题目如下:设计一个算法完成以下功能:判断一个链表是否有环,如果有,找出环的入口点并返回,否则返回NULL。王道给出的题解设置快慢两个指针分别为fast和slow,初始时都指向链表头 head。slow每次走一步,即slow=slow->next; fast每次走两步,即fast=fast->next->next。由于fast 比 slow走得快,如果有环,fast一定会先进入环,而slow后进入环。当两个指针都进入环后,经过若干次操作后两个指针定能在环上原创 2021-02-18 22:50:10 · 1047 阅读 · 0 评论 -
运用求最近公共祖先思想秒杀2012考研408数据结构算法大题
22王道数据结构P39 T22【2012统考真题】假定采用带头结点的单链表保存单词,当两个单词有相同的后缀时,可共享相同的后缀存储空间,例如"loading"和"begin"的存储映像如下图所示。设str1和str2分别指向两个单词所在单链表的头结点,链表的结点结构为data,next,请设计一个时间上尽可能高效的算法,找出由str1和str2所指向两个链表共同后缀的起始位置(如图中字符i所在结点的位置p)拿到题目我们可以先把链表结点结构的结构体写出来struct LNode{ char dat原创 2021-02-18 20:37:37 · 1419 阅读 · 9 评论 -
数据结构王道书上的一道链表综合题
22版王道数据结构 P38 T20设头指针为L的带有表头结点的非循环双向链表,其每个结点中除有pred(前驱指针)、data(数据)和next(后继指针)域外,还有一个访问频度域freq。在链表被启用前,其值均初始化为零,每当在链表中进行一次Locate(L,x)运算时,令元素值为x的结点中freq域的值增1,并使此链表中结点保持按访问频度非增(递减)的顺序排列,同时最近访问的结点排在频度相同的结点前面,以便使频繁访问的结点总是靠近表头,试编写符合上诉要求的Locate(L,x)运算的算法,该运算为函数过原创 2021-02-17 22:22:59 · 997 阅读 · 2 评论