数据结构与算法(2021aut)
文章平均质量分 69
HIT 2021秋 数据结构与算法课程学习记录
Mike峰
Senior graduate from Department of Computing, HIT.
展开
-
数据结构期末注记2
注意:图中的V表示的一般是顶点。1. 图的邻接、依附有向图中:<vi, vj>表示vi邻接到vj,也表示vj邻接于vi,称弧<vi, vj>依附于vi和vj。(有向边也称作弧)2. 有向图也有度(TD)这个说法,它的TD = ID +OD(即度等于入度加上出度)3. 路径长度(分为非带权图和带权图两种)非带权图:路径上边的条数带权图:路径上各边的权值之和(路径是顶点序列)4. 简单路径:序列中没有重复的顶点简单回路(也成为环):除了终始两个顶点相同,其..原创 2021-11-27 14:54:15 · 236 阅读 · 0 评论 -
数据结构期末注记1x
1. 二叉查找树(BST)的查找性能:最好情况:与折半查找的判定树类似,平均查找长度为log_2 n最坏情况:退化成了单支树,平均查找长度为(n +1)/2最好情况:二叉查找树的平均高度为O(log_2 n),因此在平均情况下时间复杂性为O(log_2 n)。就查找性能来讲,BST与二分查找树的查找复杂度都是O(log_2 n)但是对于树的插入删除节点之后有序性的维护而言,BST更具优势:BST的插入、删除操作的平均执行时间为O(log_2 n)而二分查找树的插入删除操作平均执行时间为O.原创 2021-11-23 11:58:54 · 1284 阅读 · 0 评论 -
外部排序——数据结构复习
1.选择树包括胜者树、败者树,用于多路归并,选择出K条路(已经排好序)中每条路第一个元素中最小的元素。关于为什么“多路归并”与外排配合而不是“堆排序”与外排配合:原因是多路归并只需要占用内存空间...原创 2021-11-20 14:32:40 · 463 阅读 · 0 评论 -
内部排序——数据结构复习
计划:11/14 内部排序11/15 外部排序11/16 查找11/17 图11/18 树与二叉树11/19 二叉树习题课11/20 线性表、栈与队列11/21 绪论、算法机动:穿插看补充文档正文:11/14 内部排序原创 2021-11-17 18:26:58 · 837 阅读 · 0 评论 -
数据结构作业——几种排序的序列
期末做个水一些的作业填空题:在内排序的过程中,通常需要对待排序的关键码集合进行多遍扫描。采用不同排序方法,会产生不同的排序中间结果。设要将序列< M,S,R,D,F,X,Q,H,C,Y,P,A >中的关键码按字母的升序重新排列,则(1) __是冒泡排序一趟扫描的结果,(2) __是初始步长为4的希尔排序一趟扫描的结果,(3) __是两路归并(合并)排序一趟扫描的结果,(4) __是以第一个元素为分界元素的快速排序一趟扫描的结果,(5) __是堆排序初始建堆的结果。解答:(原创 2021-11-14 01:06:05 · 1052 阅读 · 0 评论 -
数据结构作业4——图的DFS等获得连通分量
题目:微信朋友圈出了扩大版。其中好友分为直接好友和间接好友。和你有直接好友关系的是你的直接好友,你的直接好友的好友都是你的间接好友。所有互为好友的人共同构成了一个朋友圈,圈里每个人都其他人的直接或间接的好友。已知微信用户共有N位,以及他们之间的直接好友关系,请你找出总共形成了多少个扩大版朋友圈。输入格式第一行输入两个整数N(1<=N<=1000),M(0<=M<10000),分别表示微信用户的人数、他们之间的直接好友关系的数目。接下来有M行输入,每行输入两个整数x(1&l原创 2021-11-17 21:16:04 · 646 阅读 · 0 评论 -
C++自学笔记
自学网站:C语言中文网链接:C++入门教程http://c.biancheng.net/cplus/一、从C到C++1.2 C++类和对象到底是什么意思?C++ 中的类也是一种构造类型,但是进行了一些扩展,类的成员不但可以是变量,还可以是函数;通过类定义出来的变量也有特定的称呼,叫做“对象”。有个问题:class Student{public: //类包含的变量 char *name; int age; float score; //类包含的转载 2021-10-11 22:00:06 · 117 阅读 · 0 评论 -
数据结构与算法作业3——二叉树路径
是原创 2021-10-15 22:51:30 · 268 阅读 · 0 评论 -
数据结构与算法实验1——公司管理(二叉树)
实验一 公司组织管理题目:某公司利用链表管理员工之间的领导关系,如上图所示。每名员工用链表中的一个节点表示,每个节点有name、next、prev和lead四个属性。以“王总”节点为例:name(王总): 员工姓名,每个员工的姓名唯一;next:指向和王总同级的后一位员工;prev:指向和王总同级的前一位员工;lead:指向直接受王总领导的员工。每一位员工直接领导最多1名员工,最少0名员工。请你实现一个系统,接受4种命令作为输入,实现4种功能:1.(输入)ini.原创 2021-11-17 21:16:54 · 1495 阅读 · 0 评论 -
关于指针、地址的大小的问题(以及malloc的用法)
任何变量的指针大小都是一样大小的空间,例如在64位机中是4个字节,在32位机中是2个字节。而我们分配一个地址,就比如力扣145题https://leetcode-cn.com/problems/binary-tree-postorder-traversal/solution/er-cha-shu-de-hou-xu-bian-li-by-leetcode-solution/该题其中一句:int *matrix = malloc(sizeof(int) * 2001);给res这个指针分配了原创 2021-10-08 00:25:01 · 508 阅读 · 0 评论 -
历史遗留问题
1. 二叉树的遍历(非递归)——重点是后序。时间:2021/10/6~2021/10/7原创 2021-10-07 16:57:09 · 100 阅读 · 0 评论 -
对于栈、递归的关系的理解
对于某一个递归程序,实际上就是使用栈实现的。在递归过程中,经常需要进入在函数A中进入下一层函数A(也就是函数自己调用自己)个人的理解:当函数A(a层)进入下一层(a+1层)函数A(和自己一样的函数),系统会将下一层函数的变量也进栈。当下一层(a+1层)函数退出的时候,也就是自然返回到了本层(a层),此时我们就将第a+1层的变量出栈,栈顶的元素就是第a层的变量了。这样,函数也就知道自己是在第几层了。...原创 2021-10-07 16:19:09 · 554 阅读 · 0 评论 -
二叉树的遍历(非递归)
由于二叉树的递归方法实际上是系统在使用栈进行操作,因此我们的迭代(非递归)方法也就需要使用栈进行模拟。一、先序遍历我们需要明白,进栈的元素都是树的根节点 root。所以我们需要先访问该节点,再将该节点进栈。【数据结构】树的非递归先序遍历、中序遍历算法_哔哩哔哩_bilibili二叉树的非递归后序遍历算法https://www.bilibili.com/video/BV1gV411U7XJ?from=search&seid=5899376191017226924&spm_id_fro原创 2021-10-06 21:55:34 · 329 阅读 · 0 评论 -
数据结构与算法作业3——约瑟夫环问题(循环链表)
第二次作业:习题2 载具杀手与时停高手著名绅士简尚夫有一项特殊的天赋,他可以摧毁任意一辆载具(载具杀手)。他的朋友狄傲可以将时间暂停(时停高手)。他俩玩一个游戏。有N辆车,编号1~N。其中编号A的是狄傲心爱的压路机。指定编号B的车作为起点,简尚夫首先摧毁这辆车;然后往后数K辆车,摧毁第K辆;然往后数K辆车,摧毁第K辆。数到最后一辆车,则回到剩余的第一辆车接着数。直到把所有车全部摧毁。当简尚夫将要摧毁狄傲的压路机时,狄傲会发动时停技能阻止他。请你构建循环链表,模拟这个过程(模拟到发动.原创 2021-09-29 21:39:26 · 220 阅读 · 0 评论 -
数据结构与算法作业2——双向链表
第二次作业:习题1 双向链表双向链表的知识点:同单链表相比,双链表仅是各节点多了一个用于指向直接前驱的指针域。因此,我们可以在单链表的基础轻松实现对双链表的创建。与单链表不同,双链表创建过程中,每创建一个新节点,都要与其前驱节点建立两次联系,分别是:将新节点的 prior 指针指向直接前驱节点;将直接前驱节点的 next 指针指向新节点。双向链表的创建 2021/9/26Doubly Linked List | Set 1 (Introduction and Inser.原创 2021-09-27 13:15:21 · 448 阅读 · 0 评论 -
数据结构与算法作业1——数组链表入门
习题1 删除列表的倒数第n个节点题目链接方法一 暴力求解(1)先遍历得到链表的节点个数(2)删除链表的第L-N+1个节点时间复杂度:o(n)空间复杂度:o(1)方法二原创 2021-09-21 10:21:40 · 255 阅读 · 0 评论