
2020 c 数据结构
文章平均质量分 76
本人深圳大学在读博士
研究大模型,数据结构,算法领域
每天帮助你们总结前言论文以及领域相关问题解决办法。c++ 数据结构等问题。
任何问题私信均回复。
优惠券已抵扣
余额抵扣
还需支付
¥119.90
¥299.90
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
ZhangJiQun&MXP
本人在读博士,研究大模型,数据交易,联邦学习领域
每天帮助你们总结前言论文以及个人遇到问题。
投稿Expert Systems with Applications历时4个月;中科院1区顶刊,本人在科研一线,在文章架构设计,公式编辑,图片美化,语言润色。overleaf编辑方面有一定经验,直接订阅后私信本人可以协助完成投稿返修。https://blog.youkuaiyun.com/qq_38998213/article/details/146232131?sharetype=blogdetail&sharerId=146232131&sharerefer=PC&sharesource=qq_3899821
展开
-
我们自己的想法才是自己的囚牢
同时,我们也要意识到,在这个广袤的世界里,每一个“我”都是独特的个体,无数个“我”共同构成了丰富多彩的人类社会。在生活的漫漫征途中,我们常常不自觉地陷入一种无形的困境,殊不知,真正束缚我们的,并非外界的艰难险阻,而是我们内心深处那些固执坚守的想法。的渴望驱使,一心只盯着那遥不可及的目标,满心都是不达目的不罢休的执念,却忽略了沿途的美好风景,忘却了生活中那些简单纯粹的快乐。其实,只要我们试着换个角度,放下那些不必要的执着,看开一切,便能发现,曾经那些让我们辗转难眠的烦恼,不过是过眼云烟,一切都可以云淡风轻。原创 2025-02-19 23:09:57 · 33 阅读 · 0 评论 -
并查集,路径压缩
并查集:(union-find sets)是一种简单的用途广泛的集合. 并查集是若干个不相交集合,能够实现较快的合并和判断元素所在集合的操作,应用很多,如其求无向图的连通分量个数、最小公共祖先、带限制的作业排序,还有最完美的应用:实现Kruskar算法求最小生成树。要寻找集合的代表元素(都城),只需要一层一层往上访问父节点(图中箭头所指的圆),直达树的根节点(图中橙色的圆)即可。神州大地上 4,5,6也发生着相同的事情,5,6也背4号诸侯吞并了,定都4号城池。同时2号也被1号吞并了,定都1号城池。原创 2023-08-12 10:39:34 · 161 阅读 · 0 评论 -
先序遍历,中序遍历,后序遍历
7.由于节点 5 无左子树,因此访问节点 5 ,又因为节点 5 没有右子树,因此节点 1 的左子树遍历完成,访问节点 1 ,并遍历节点 1 的右子树,找到节点 3;9.由于节点 6 无左子树,因此访问节点 6,又因为该节点无右子树,因此节点 3 的左子树遍历完成,开始访问节点 3 ,并遍历节点 3 的右子树,找到节点 7;2.由于节点 4 既没有左子树,也没有右子树,此时访问该节点中的元素 4,并回退到节点 2 ,遍历节点 2 的右子树(以 5 为根节点);3.完成该节点的左右子树的访问后,再访问该节点。原创 2023-08-11 22:14:47 · 346 阅读 · 0 评论 -
基础堆排序
堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆是一个近似 完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。原创 2023-08-11 21:58:22 · 216 阅读 · 0 评论 -
数据结构与算法-排序
插入排序(InsertionSort),一般也被称为直接插入排序。对于少量元素的排序,它是一个有效的算法。插入排序是一种最简单的排序方法,它的基本思想是将一个记录插入到已经排好序的有序表中,从而一个新的、记录数增 1 的有序表。在其实现过程使用双层循环,外层循环对除了第一个元素之外的所有元素,内层循环对当前元素前面有序表进行待插入位置查找,并进行移动。希尔排序(Shell Sort)是插入排序的一种,它是针对直接插入排序算法的改进。原创 2023-08-11 21:45:29 · 323 阅读 · 0 评论 -
2021-05-22
目录android bundle 空指针增加带有背景的圆角矩形Android studio 写java textAndroid 打开指定文件夹Android文件夹目录android bundle 空指针一定能注意: intent.putExtras(bundle);Intent intent=new Intent(MainActivity.this,TwoActivity.class);Bundle b...原创 2021-05-22 18:10:48 · 342 阅读 · 0 评论 -
内存泄露: 内存:栈(stack),堆(heap),方法区(method) Java GC 内存泄露和内存溢出 内存泄露 内存抖动
内存泄露:外部类持有Activity引用;异步执行耗时任务,持有Activity,但是Activity已经finish;Handler,Runable会隐式持有Activity,耗时操作未完成,Activity回收。这些都是由于一个对象已经完成任务要被回收,但是由于其他对象持有当前对象引用,造成java不能进行GC,导致内存泄漏。解决:1.对某些对象采用软引用,在GC...原创 2020-04-06 16:48:31 · 472 阅读 · 0 评论 -
C++中char * 和char []的区别 堆栈区别 JAVA的JVM的内存可分为3个区:堆(heap)、栈(stack)和方法区(method)
在实习过程中发现了一个以前一直默认的错误,同样char *c = "abc"和char c[]="abc",问题的实质在于栈与堆控制权的问题,我们只能操作堆(heap):这样的好处是灵活性大,我们可以自由的定义,内存申请,写入,资源回收。对于栈(stack)是:由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。前者改变其内容程序是会崩...原创 2018-10-15 10:54:36 · 1185 阅读 · 0 评论 -
计算机程序设计基础(c语言)
声明在先:截图来源bibili https://www.bilibili.com/video/BV1E7411777A?p=7,目的在于总结计算机程序设计相关全部知识;便于快速查看复习计算机程序设计知识,在心中形成整体计算机程序设计框架;如侵权请告知删除;整理不易;目录为什么学习程序设计什么是程序设计程序设计概述什么叫程序什么是程序程序和软件的区别程序设计含义程序设计步骤算法概念C语言程序的运行步骤IDE:集成开发环境程序设计...原创 2021-01-11 22:38:48 · 874 阅读 · 0 评论 -
2019总结:矩阵的逆 等价合同相似 行列式秩不满 线形相关 基础解系 转置 伴随矩阵 向量的内积 政治 计算机 拥塞窗口
矩阵的逆其主要原因是:矩阵没办法被除。(这个时间各位模友可以回想一下:是不是从来都没看过矩阵被除)换句话说,矩阵根本就没有被除的概念。而矩阵的逆,正好是被我们用来解决“矩阵除法”的问题。等价(只有秩相同)–>合同(秩和正负惯性指数相同)–>相似(秩,正负惯性指数,特征值均相同),矩阵亲密关系的一步步深化。(正惯性指数:属于数学学科,简称正惯数,是线性代数里矩阵...原创 2019-09-02 16:15:34 · 458 阅读 · 0 评论 -
完全图公式 非连通无向图有28条边,至少有多少顶点 一个链式队列的队头和队尾指针分别为f和r,则判断队空的条件为 在用单链表表示的链式队列Q中
目录完全图公式非连通无向图有28条边,至少有多少顶点一个链式队列的队头和队尾指针分别为f和r,则判断队空的条件为在用单链表表示的链式队列Q中完全图公式n个端点的完全图有n个端点以及n(n − 1) / 2条边,以Kn表示例题:非连通无向图有28条边,至少有多少顶点8个点全联通27 ,加上一个孤立点;所以28条边的非连通无向图为9个(加入一个孤立点)一个链式队列的队头和队尾指针分别为f和r,则判断队空的条件为A.f!=NULLB.r!=NULLC.f==NU原创 2020-12-22 20:59:45 · 4509 阅读 · 0 评论 -
递归和while区别 递归算法三步 递归应用 递归杨辉三角 求树的深度 递归求叶子节点总数 链表逆置 二叉树叶子节点到根节点路径 比较两个二叉树是否相同
递归:你打开面前这扇门,看到屋里面还有一扇门。你走过去,发现手中的钥匙还可以打开它,你推开门,发现里面还有一扇门,你继续打开它。若干次之后,你打开面前的门后,发现只有一间屋子,没有门了。然后,你开始原路返回,每走回一间屋子,你数一次,走到入口的时候,你可以回答出你到底用这你把钥匙打开了几扇门。循环:你打开面前这扇门,看到屋里面还有一扇门。你走过去,发现手中的钥匙还可以打开它,你推开门,发现...原创 2018-11-28 20:09:24 · 316 阅读 · 0 评论 -
一、双亲存储结构 二、孩子链存储结构 三、孩子兄弟链存储结构 树的左孩子右兄弟存储实质:就是转化成二叉树的链式存储 树递归求叶子节点 递归求树的深度
目录树的存储的三种方式一、双亲存储结构二、孩子链存储结构三、孩子兄弟链存储结构二叉树一般是两种顺序存储和链式存储;树的存储的三种方式一、双亲存储结构typedef struct{ int data; int parent;}PTree[max_size];//P表示parent图像如下:二、孩子链存储结构typedef struct snode{ int data; node *ne...原创 2020-12-05 22:39:25 · 1015 阅读 · 0 评论 -
->和 .的区别 ->的作用(专门用于指针,实质:地址存储)
p->a,其中p是指向一个结构体的指针,a是这个结构体类型的一个成员。表达式p->a引用了指针p指向的结构体的成员a。p是一个结构体的指针,p->a就是结构体的一个属性a属性。#include <iostream>#include <cstring> using namespace std;void printBook( struct...原创 2018-10-12 09:39:56 · 2215 阅读 · 0 评论 -
->和 .的区别 c++引用程序代码
#include <iostream>using namespace std;int main(){ int a=11; int &b=a; cout << &b << endl; cout << b << endl; return 0;}程序就是吧b的地址赋值...原创 2019-11-07 22:23:30 · 234 阅读 · 0 评论 -
字符指针和整形指针简单分析,*,&的作用。
你始终记住 * 就是取值的,例:*p,你看看p中存的是什么是地址的话就是去这个地址中存的内容,如不是抵制就返回0;代码如下: string ww="zhj";string * dizhi=&ww;//存的地址cout <<dizhi<<endl;//取出地址cout <<*dizhi<<endl...原创 2018-10-12 12:59:58 · 1808 阅读 · 0 评论 -
数据结构题目
[判断题] 如果无向图中每个顶点的度都大于等于2,则该图中必有回路。A . 正确B . 错误参考答案: 正确设一组初始记录关键字序列为(45,80,48,40,22,78),则分别给出第4趟简单选择排序和第4趟直接插入排序后的结果。(22,40,45,48,80,78),(40,45,48,80,22,78) 简单记忆:几趟就是排几个;在一个单链表HL中,若要向表头插入一个由指针p指向的节点,则需要执行语句序列( )。A.HL=p;p->next=HL;B...原创 2020-11-28 17:07:23 · 484 阅读 · 0 评论 -
排序算法第n趟总结 排序算法时间空间复杂度 各种排序算法额外空间
总结排序:认准1.数组规模。2.数组是否基本有序3.是否要求稳定记住:冒泡以及归并是稳定的。 快排不稳定,基本就能解决问题(1)若n较小(如n≤50),可采用直接插入或直接选择排序。 当记录规模较小时,直接插入排序较好;否则因为直接选择移动的记录数少于直接插人,应选直接选择排序为宜。(2)若文件初始状态基本有序(指正序),则应选用直接插人、冒泡或...原创 2018-11-28 20:04:50 · 868 阅读 · 0 评论 -
有关指针的基础知识(指针定义和使用) 详解二维数组与指针、指针数组、数组指针
int* p=a[0];//此时P是指向一维数组的指针。P++后,p指向 a[0][1]。int (*p1)[n];p1=a;p1++后,p1指向a[1][0]; int *p=a[0];则数组a的元素a[1][2]对应的指针为:p+1*4+2元素a[1][2]也就可以表示为:*( p+1*4+2)用下标表示法,a[1][2]表示为:p[1*4+2]特别说明:对上述二维数组a,...原创 2018-10-30 14:21:41 · 2603 阅读 · 0 评论 -
循环链表建立
1.首先回忆一下之前链表的创建方式尾插法创建链表Node *CreateLinkListByTail(int n){ Node *p; //初始化链表的头结点 LinkList=new Node; //指针域为空 linkList->next=NULL; head=LinkList; for(auto i=0;i<n;i...原创 2018-12-22 22:57:02 · 2753 阅读 · 1 评论 -
数据结构,完全二叉树,满二叉树
霍夫曼树:每个节点要嘛没有子节点,要么有两个子节点完全二叉树:满二叉树的一部分或者全部。满二叉树:每个父亲都有2个叶子。 1 1 / \ / \ 1 1 ...原创 2018-10-15 11:08:42 · 337 阅读 · 0 评论 -
散列表查找成功的平均查找长度实质 开散列和闭散列 链地址法举例 闭散列负载因子 开散列的负载因子
开散列:链地址法闭散列:开放地址法(处理冲突:线性探测法,二次先行探测等)方法一:闭散列(即开放地址法):当发生哈希冲突时,如果该哈希表还没有被填满,那么就把该元素放到哈希表的下一个空闲的位置。线性探测法查找下一个位置;方法2:开散列法(哈希桶):又名链地址法,先用哈希函数计算每个数据的散列地址,把具有相同地址的元素归于同一个集合之中,把该集合处理为一个链表,链表的头节点存储于哈希...原创 2018-10-27 14:41:38 · 964 阅读 · 0 评论 -
节点度表示法 表头节点,表结点 内部排序
二叉树的顺序存储结构可看作是二叉树的一种无边表示,即树中边信息是隐含的。二叉树的另一种无边表示称为二叉树的结点度表示。这种表示法将二叉树中所有结点依其后序列表排列,并在每个结点中附加一个0到3之间的整数,以表示结点的状态。该整数为0时,表示相应的结点为一叶结点;为1时,表示相应结点只有一个左儿子;为2时,表示相应结点只有一个右儿子;为3时,表示相应结点有两个儿子。...原创 2018-10-21 11:28:27 · 3412 阅读 · 0 评论 -
B树的定义 B树的插入 B树的删除 B树定义
目录B树的定义B树的插入B树的删除B树定义B树的定义一棵m阶的B树满足下列条件∶描述一颗 B树时需要指定它的阶数,阶数表示 此树的结点最多有多少个孩子结点(子树),一般用字母 M 表示阶数。每个结点至多有m棵子树。 除根结点外,其它每个分支至少有 t = ⌈m/2⌉棵子树。 根结点至少有两棵子树(除非B树只有一个结点)。 所有叶结点在同一层上。 B树的叶结点可以看成一种外部结点,不包含任何信息。 某个元素的左子树中的元素都比它小,右...原创 2020-10-16 22:31:56 · 202 阅读 · 0 评论 -
一、时间复杂度 二、空间复杂度
目录一、时间复杂度二、空间复杂度一、时间复杂度我们想要知道一个算法的「时间复杂度」,很多人首先想到的的方法就是把这个算法程序运行一遍,那么它所消耗的时间就自然而然知道了。这种方式可以吗?当然可以,不过它也有很多弊端。这种方式非常容易受运行环境的影响,在性能高的机器上跑出来的结果与在性能低的机器上跑的结果相差会很大。而且对测试时使用的数据规模也有很大关系。再者,并我们在写算法的时候,还没有办法完整的去运行呢。因此,另一种更为通用的方法就出来了:「大O符号表示法」,即 T(n...原创 2020-10-16 21:35:27 · 188 阅读 · 0 评论 -
数据结构
线性表单链表理解命名所对应的意义,好辨析,单链表和节点头结点就是data为空,指针域指向第一个数据元素带头头结点便于计算原创 2021-01-11 18:19:02 · 298 阅读 · 2 评论 -
树的定义和树的三种存储结构
秩也就是他的高度;一、树的定义1.树的定义树(Tree)是n(n>=0)个结点的有限集。n=0时称为空树。在任意一颗非空树中:有且仅有一个特定的称为根(root)的结点; 当n>1时,其余结点可分为m(m>0)个互补交互的有限集T1、T2...Tm,其中每一个集合本身又是一棵树,并称为根的子树(SubTree)。 Tree 2.树的特点n>...原创 2018-10-27 23:44:43 · 2712 阅读 · 0 评论 -
线索二叉树,搜索二叉树,AVL二叉树,满二叉树,完全二叉树,平衡二叉树,最优二叉树
二叉树的遍历本质上是将一个复杂的非线性结构转换为线性结构,使每个结点都有了唯一前驱和后继(第一个结点无前驱,最后一个结点无后继)。对于二叉树的一个结点,查找其左右子女是方便的,其前驱后继只有在遍历中得到。为了容易找到前驱和后继,有两种方法。一是在结点结构中增加向前和向后的指针fwd和bkd,这种方法增加了存储开销,不可取;二是利用二叉树的空链指针。二叉查找树(又:二叉搜索树,二叉排...原创 2018-10-15 16:14:20 · 739 阅读 · 0 评论 -
数据结构物理存储方式
物理存储方式1、顺序存储方式:bai顺序存储方式就是在一块连续的存储区域一个接着一个的存放数据,把逻辑上相连的结点存储在物理位置上相邻的存储单元里,结点间的逻辑关系由存储单元的邻接挂安息来体现。顺序存储方式也称为顺序存储结构,一般采用数组或者结构数组来描述。2、链接存储方法:它比较灵活,其不要求逻辑上相邻的结点在物理位置上相邻,结点间的逻辑关系由附加的引用字段表示。一个结点的引用字段往往指导下一个结点的存放位置。链接存储方式也称为链接式存储结构,一般在原数据项中增加应用类型来表示结点之间的位置关系。原创 2020-09-26 01:02:22 · 5024 阅读 · 0 评论 -
p->next 指的是这个节点的指针域 还是下一个节点 单链表逆置; 无序链表与有序链表的区别: 单链表有无头指针遍历:
有序链表就是,从头结点开始到链表结尾,节点中数据有序排列比如说递增,递减或者其他满足一定条件的规则无序链就是没有顺序;原创 2018-10-15 11:51:57 · 7135 阅读 · 0 评论 -
图邻接矩阵 结构体 图邻接表 结构体 指针为什么要有类型 “->”和“.”的区别 C++传参三种方式(*和&的区别) (int 参数)C++参数传递的三种方式 (结构体)
目录c++ new 结构体 返回的是指针什么是空指针什么是NULLNULL和0:c++ new 结构体 返回的是指针什么是空指针指针通过空指针常量赋值之后就是一个空指针,不指向任何实际的对象或者函数。什么是NULL在语言 stdio.h / stddef.h中有如下定义NULL是一个标准规定的宏定义,用来表示空指针常量#define NULL ((void *)0)NULL和0:在C语言中,可以说NULL就...原创 2020-09-20 23:03:53 · 345 阅读 · 0 评论 -
数据结构基础知识概念 数据结构的逻辑结构: 线性表 顺序表 链表 栈和队列 栈的链式存储: 队列的链式存储:
目录数据结构是什么?数据结构的存储结构:线性表树存储结构图存储结构一、基本概念2、算法的基本概念二、线性表三、栈和队列四、树、二叉树五、图六、查找七、排序数据结构是什么?我认为,数据结构是一门学科,它教会我们“如何存储具有复杂关系的数据更有助于后期对数据的再利用”。数据结构的存储结构:线性表,还可细分为顺序表、链表、栈和队列; 树结构,包括普通树,二叉树,线索二叉树等; 图存储结构;线性表线性表结构...原创 2020-09-17 16:30:26 · 404 阅读 · 0 评论 -
CPU内部结构,就绪和阻塞,进程控制块
目录CPU内部结构:就绪和阻塞区别:进程控制块:PCB:是系统感知进程存在的唯一标志CPU内部结构:分为控制单元、运算单元、存储单元和时钟等几个主要部分。运算器是计算机对数据进行加工处理的中心,它主要由算术逻辑部件(ALU:Arithmetic and Logic Unit)、寄存器组和状态寄存器组成。控制器是计算机的控制中心,它决定了计算机运行过程的自动化。它不仅...原创 2020-01-08 17:54:33 · 454 阅读 · 0 评论 -
计算机编程 英语词汇
radius :半径Slate:石板,写字板Canvas:画布Airbrush:气笔,喷枪fountain: found:建立,从下向上: 喷泉。压力值:Pressure valueBrushesPlotter: 刷子, 绘图仪 画板。Stroke:(打、击等的)一下Strokes:笔画platform---平台version---版本proje...原创 2020-01-03 16:50:01 · 992 阅读 · 0 评论 -
杨辉三角,归并排序,石子堆合并,迷宫简单求解,二分查找迭代, 最长公共子序列
#include <iostream>#include <algorithm>#define MAX 101using namespace std;int D[MAX][MAX];int n;int MaxSum(int i, int j) { if(i==n) return D[i][j]; int x = MaxSum(i+1,j); ...原创 2019-12-21 21:47:04 · 331 阅读 · 0 评论 -
闭散列,开散列其实就是处理冲突的方式; 散列函数的构造方法 冲突的处理方法 散列表上的查找 哈希之查找失败(当最后一位存在)
这里是H(i-1)指的就是在你处理冲突前的 H,这里这是:5 有冲突进行处理,闭散列,开散列其实就是处理冲突的方式;哈希冲突的处理:方法一:闭散列(即开放地址法):当发生哈希冲突时,如果该哈希表还没有被填满,那么就把该元素放到哈希表的下一个空闲的位置。优缺点下面介绍;开散列法(哈希桶):又名链地址法,先用哈希函数计算每个数据的散列地址,把具有相同地址的元素归于...原创 2018-10-15 12:06:31 · 1995 阅读 · 1 评论 -
c++父类指针指向子类对象.
父类子类指针函数调用注意事项1,如果以一个基础类指针指向一个衍生类对象(派生类对象),那么经由该指针只能访问基础类定义的函数(静态联翩)2,如果以一个衍生类指针指向一个基础类对象,必须先做强制转型动作(explicit cast),这种做法很危险,也不符合生活习惯,在程序设计上也会给程序员带来困扰。(一般不会这么去定义)3,如果基础类和衍生类定义了相同名称的成员函数,那么通过对象指针调用...原创 2019-12-17 21:14:24 · 786 阅读 · 0 评论 -
c++中对象与结构体的区别,C++的继承,构造方法,析构函数
#include<iostream>using namespace std;class Base { public: Base() { cout<<"Base Creted"<<endl; } ~Base() { cout<<"Base D...原创 2018-10-12 15:43:50 · 577 阅读 · 0 评论 -
代码小记
#include <iostream>using namespace std;//基类class D{public: D(){cout<<"D()"<<endl;} ~D(){cout<<"~D()"<<endl;}protected: int d;};class B:virtual p...原创 2019-12-12 23:40:26 · 398 阅读 · 0 评论 -
彻底明白p++,*(p++)等 经典例子:char str []="Orange or Apple?";让你彻底明白p++,*(p++)等
总体来说,对于char类型 的指针是 比较特别的:p++就是指针的移位,cout<<*p:就是取出指针当前值得元素cout<<p:就是这个指针指向的全部字符;例子:#include <iostream>using namespace std;int main() { char str []="Orange or Apple?"; ...原创 2018-11-10 14:55:06 · 872 阅读 · 0 评论