- 博客(26)
- 收藏
- 关注
原创 C++:初始C++
定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{}中即为命名空间的成员。// xxm是命名空间的名字,一般开发中是用项目名字做命名空间名。// 1. 正常的命名空间定义// 命名空间中可以定义变量/函数/类型int val;//2. 命名空间可以嵌套int a;int b;int c;int d;//3. 同一个工程中允许存在多个相同名称的命名空间,编译器最后会合成同一个命名空间中。
2024-04-29 16:19:43 967
原创 数据结构12:排序
冒泡排序是每次将相邻的两元素比较,如果a[i + 1] > a[i],则对比下一组,如果a[i + 1] < a[i],则交换两元素后进行下一组对比,这样当一趟比完后可以将最大值放在数组的最后,重复上述过程n - 1次,可以实现数组升序排列。基本思想:所谓交换,就是根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置,交换排序的特点是:将键值较大的记录向序列的尾部移动,键值较小的记录向序列的前部移动。的排序码顺序进行比较,找到插入位置即将array[i]插入,原来位置上的元素顺序后移。
2024-04-26 20:27:12 535
原创 数据结构11:二叉树的链式结构
在介绍二叉树的基本操作前,需先要创建一棵二叉树,然后才能了解其相关的基本操作。由于二叉树的创建比较难理解,所以我们先手动创建一个链式二叉树,等到本文后面再介绍链式二叉树的创建方法。手动创建链式二叉树:注意:上述代码并不是创建二叉树的方式,真正创建二叉树方式本文后面会介绍。学习二叉树结构,最简单的方式就是遍历。所谓二叉树遍历(Traversal)是按照某种特定的规则,依次对二叉树中的节点进行相应的操作,并且每个节点只操作一次。访问结点所做的操作依赖于具体的应用问题。 遍历是二叉树上最重要的运算之一,也是二
2024-04-22 10:21:33 977
原创 数据结构10:堆和堆排序
树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。有一个特殊的结点,称为根结点,根节点没有前驱结点。除根节点外,其余结点被分成M(M>0)个互不相交的集合T1、T2、……、Tm,其中每一个集合Ti(1<= i <= m)又是一棵结构与树类似的子树。每棵子树的根结点有且只有一个前驱,可以有0个或多个后继。因此,树是递归定义的。注意:树形结构中,子树之间不能有交集,否则就不是树形结构节点的度:一个节
2024-04-21 10:29:34 1366
原创 数据结构6:时间复杂度和空间复杂度
基本操作执行最好1次,最坏O(logN)次,时间复杂度为 O(logN) ps:logN在算法分析中表示是底。基本操作执行最好N次,最坏执行了(N*(N+1)/2次,通过推导大O阶方法+时间复杂度一般看最。基本操作执行最好1次,最坏N次,时间复杂度一般看最坏,时间复杂度为 O(N)基本操作执行了2N+10次,通过推导大O阶方法知道,时间复杂度为 O(N)基本操作执行了M+N次,有两个未知数M和N,时间复杂度为 O(N+M)基本操作执行了10次,通过推导大O阶方法,时间复杂度为 O(1)
2024-04-15 22:49:24 1188 1
原创 C语言:编译和链接
静态语义分析通常包括声明和类型的匹配,类型的转换等。就是根据汇编指令和机器指令的对照表一一的进行翻译,也不做指令优化。将源代码程序被输入扫描器,扫描器的任务就是简单的进行词法分析,把代码中的字符分割成⼀系列的记号(关键字、标识符、字面量、特殊字符等)。其实翻译环境是由编译和链接两个大的过程组成的,而编译又可以分解成:预处理(有些书也叫预编译)、编译、汇编三个过程。链接是⼀个复杂的过程,链接的时候需要把一堆文件链接在一起才生成可执行程序。在ANSIC的任何一种实现中,存在两个不同的环境。
2024-04-12 15:30:19 651 1
原创 C语言:动态内存管理
有时会我们发现过去申请的空间太小了,有时候我们又会觉得申请的空间过大了,那为了合理的使用内存,我们⼀定会对内存的大小做灵活的调整。当是情况②的时候,原有空间之后没有足够多的空间时,扩展的方法是:在堆空间上另找一个合适大小的连续空间来使用。所以如果我们对申请的内存空间的内容要求初始化,那么可以很方便的使用calloc函数来完成任务。当时情况①的时候,要扩展内存就直接原有内存之后直接追加空间,原来空间的数据不发生变化。道,那数组的编译时开辟空间的方式就不能满足了。的空间,并返回指向这块空间的指针。
2024-04-11 21:07:47 1660
原创 C语言:自定义数据类型——结构体
这样的定义就会出问题,因为Node是对前面的匿名结构体类型的重命名产生的,但是在匿名结构体内部提前使用Node类型来创建成员变量,这是不行的。(对齐数=编译器默认的一个对齐数与该成员变量大小的较小值,VS中默认为8,Linux中gcc没有默认对齐数,对齐数就是成员自身的大小)仔细分析,其实是不行的,因为⼀个结构体中再包含⼀个同类型的结构体变量,这样结构体变量的大小就会无穷大,是不合理的。4.如果嵌套了结构体的情况,嵌套的结构体成员对齐到自己的成员中最大对齐数的整数倍处,结构。
2024-03-23 10:25:24 716 1
原创 C语言:数据在内存中的存储
超过一个字节的数据在内存中存储的时候,就有存储顺序的问题,按照不同的存储顺序,我们分为大端字节序存储和小端字节序存储,下面是具体的概念:大端(存储)模式:是指数据的低位字节内容保存在内存的高地址处,而数据的高位字节内容,保存在内存的低地址处。小端(存储)模式:是指数据的低位字节内容保存在内存的低地址处,⽽数据的高位字节内容,保存在内存的高地址处。
2024-03-20 16:50:31 1037 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人