- 博客(44)
- 收藏
- 关注
原创 (浙大陈越版)数据结构 第三章 树(中) 二叉搜索树和平衡二叉树
查找问题分为两类静态查找:固定数据集内查找,只进行find操作动态查找:数据集有添加和删除操作,在此情况下查找针对动态查找,数据如何组织?前面提过一种高效的查找方法:二分查找。这种查找方式高效的前提是数据是有序排列的。如果将二分查找的顺序列出来,可以形成名为判定树的结构。至此,就可以将一个线性的查找过程转换为树的查找过程,而判定树的查找效率就是树的高度。那么仔细想想,直接将数据放到树结构中而不是数组结构,是否能进一步提升效率?
2023-06-07 22:41:40
948
原创 (浙大陈越版)数据结构 第三章 树(上) 3.4 小白专场:树的同构(PTA编程题讲解)
讲解了课程配套pintia平台习题编程题第六题,树的同构。通过输入两颗树的数据来判断两棵树是否为同构的
2023-05-29 23:35:01
537
原创 (浙大陈越版)数据结构 第三章 树(上) 3.3 二叉树的遍历
而难点在于,只有通过父结点才能访问到左右孩子结点,再通过子结点来访问子结点的左右孩子结点,因此如果变成线性结构,线性就意味着一个点只与另一个点有关,而子结点会有两个,当访问了一个子结点之后另一个子结点该怎么处理?但后序遍历不能简单挪动位置实现,因为后序遍历在操作完左右子树后需要返回到根结点,而且是在第三次经过根结点时将其pop出去,所以实现它需要用到两个堆栈。思路:已知先序第一个结点是根结点,只要在中序中找到一样的结点,就能在中序遍历序列中分割开左子树和右子树,再递归使用这个方法分解全部结点。
2023-05-29 22:22:50
1063
原创 (浙大陈越版)数据结构 第三章 树(上) 3.2 二叉树及存储结构
二叉树T:一个有穷的结点集合。这个集合可以为空(称为空二叉树)。若不为空,则它是由根结点和称为其左子树TL和右子树TR的 两个不相交的二叉树组成。可以视作是度为2的树,但有左右子树之分类型名称:二叉树数据对象集:一个有穷的结点集合数据对象集若不为空,则由根结点和其左右二叉子树组成。
2023-05-25 21:27:00
726
原创 (浙大陈越版)数据结构 第三章 树(上) 3.1 树和树的表示
在客观世界上许多事物存在层次关系。如人类社会的家谱、社会组织管理结构、省市县乡镇的分级,计算机中为了还原这种结构,使用了树这种数据结构。那么为什么要使用这种层次结构?因为分层组织在数据管理方面有更高的效率下面以数据管理的基本操作之一:查找为例来分析,如何实现有效的查找?树(Tree):n(n>=0)个结点构成的有限集合空树:n=0,即没有结点。其对应的是非空树。对于任意一颗非空树,它具备以下性质:树中有一个称为根(Root)的特殊结点,用r表示其余结点可分为m(m>0)个互不相交。
2023-05-17 21:18:29
486
原创 (浙大陈越版)数据结构 第二章 线性结构 2.4 多项式的加法和乘法运算实现
观察多项式求和的过程规律,对于次数不同的项我们直接放到最终结果中即可,对于次数相同的项才进行加减运算。于是我们可以用一个不带头结点的单向链表,按照指数递减的顺序来排列每一项,来实现多项式加法。多项式的乘积,需要用一个多项式的每一项和另一个多项式的每一项相乘,具体来说需要每项系数相乘、指数相加,然后将乘积加在一起得出结果。当其中一个多项式已经处理完毕,就将另一个多项式的所有节点全部添加到结果多项式中。加法的大体框架:三个循环,一个比较t1和t2,两个分别测试多项式是否为空。方法1:把乘法运算转换为加法运算。
2023-05-08 21:10:25
471
原创 (浙大陈越版)数据结构 第二章 线性结构 2.2 堆栈
堆栈概念:一种线性结构,也是特殊的线性表用途:表达式求值、递归、函数调用等实际上是使用堆栈实现的如果没有优先级顺序,从左向右计算即可。表达式求值需要的是运算符和运算符前后的两个算子。而通常情况下运算符之后的数字并不一定是算子,而是需要运算的表达式。然而如果已知两个算子,那么接下来的计算就比较简单了。我们就引入了后缀表达式。
2023-05-05 22:14:14
997
原创 线性表的顺序存储结构具体实现 代码实战 赛博图书馆搭建指南(使用C\C++语言)
完整地实现了用顺序表存储元素,并且通过将数据类型改为字符串结构体来搭建一个“赛博图书馆”,实现了顺序表的打印、插入元素、删除元素、查询元素,配以图文详解
2023-04-05 21:25:18
629
原创 (浙大陈越版)数据结构 第二章 线性结构 2.1 线性表及其实现
讲解了线性结构、线性表、线性表的顺序存储和链式存储及其实现方法,补充了广义表、多重链表。引入多项式、矩阵等实际问题讲解相关概念。部分实现采用了C语言代码。
2023-03-25 21:31:11
653
原创 (浙大陈越版)算法与数据结构 第一章 概念和案例(后半)
算法与数据结构的第一章,有关概念和案例,通过计算最大子列和问题引出一个非常重要的算法思想
2023-03-12 23:31:17
203
原创 DirectX12 3D(龙书)学习笔记 第四章 Direct3D的初始化 4.3初始化Direct3D
创建好设备之后就可以为CPU和GPU的同步而创建围栏了。使用描述符需要了解它们的大小,然而其在不同GPU平台上大同小异,需要查询相关信息。可以将描述符大小缓存起来,需要时直接引用。初始化D3D必须先创建D3D12设备(代表3D图形硬件或者软件模拟的图形硬件)。D3D12设备可以检测系统环境对功能的支持情况,也能创建其他D3D接口对象。4x就够用好用,要额外加上对质量级别的检测。太多了,不想写了,下次一定。
2022-10-31 22:52:04
225
原创 DirectX12 3D(龙书)学习笔记 第四章 Direct3D的初始化 4.1 预备知识
Direct3D是一种底层图形应用程序编程接口(Application Programming Interface,aka API),通过它我们就能在应用程序中对图形处理器(Graphic Processing Unit,GPU)进行控制和编程。借此就能以硬件加速的方式渲染出虚拟3D场景。相较Direct3D 11更加偏向底层。
2022-10-31 22:11:17
464
原创 Oracle VM VirtualBox虚拟机配置(配置Windows7为例)
为了学习DX11故配置了一套虚拟机的环境,将其中细则记录一番。的配置,主要原因是和学校机房一样比较方便问老师,试过VS2010的古早界面不太舒服。
2022-10-04 22:51:18
8403
原创 浙大版《C语言程序设计(第4版)》题目集保姆级讲解(第三章)
对于任一整数n,符号函数sign(n)的定义如下:请编写程序计算该函数对任一输入整数的值。
2022-08-11 02:13:17
2800
原创 C语言学习笔记(浙大翁恺版)第十三周 文件 详解库函数(1)
原因是dos是一些爱好者开发,面向个人电脑的,而且PC刚开始时能力有限,二进制更接近底层。交互式终端的出现使得人们喜欢用文本和计算机交互,unix的shell在最开始提供了一些读写文本的小程序,因此文本和二进制是两种群体产生的不同习惯。因为二进制文件的读写一般都是通过对一个结构变量的操作来进行的,nitems用来说明要读写几个结构变量,size其实指的也是结构大小。这样的二进制文件不具有可移植性,如int为32位的机器上写成的数据文件无法直接在int位64位的机器上正确读出。二进制的优点是程序读写快;...
2022-08-06 16:36:54
363
原创 C语言学习笔记(浙大翁恺版)第十二周 文件(3)
声明是不产生代码的东西函数原型、变量声明、结构声明、宏声明、枚举声明、类型声明、inline函数定义是产生代码的东西函数、全局变量。
2022-08-04 23:10:52
272
原创 C语言学习笔记(浙大翁恺版)第十二周 文件(2)
开头的都属于编译预处理指令(它们不是C语言的成分,但C语言离不开它们)#define用来定义一个宏.c->.i(编译预处理完成)->.s(编译器编译,汇编代码文件)->.o(目标代码文件)->a.out(完成链接,生成可执行文件)//当你需要定义一个常量...//C99#define PI 3.14159//老版本C,//定义一个符号————宏,名为PI,值为3.14159编译预处理阶段会将所有PI替换为3.14159,简单的文本替换int main(){return 0;}...
2022-08-04 16:19:22
208
原创 C语言学习笔记(浙大翁恺版)第十二周 文件(1)
我们之前了解了,本地变量这个说法,也就是定义在函数内部的变量。与之对应的就是定义在函数外的变量——全局变量。
2022-08-03 21:02:48
164
原创 C语言学习笔记(浙大翁恺版)第十一周 结构(3)
C语言提供了一个叫做typedef的功能来声明一个已有的数据类型的新名字这样就使得Length成为了int类型的别名,此时Length可以代替int出现在变量定义和参数声明的地方,如声明新的类型的名字,作为某种类型的别名,大大改进了可读性typedef 原来的类型名 新类型名如果原类型名很长,只需要看最后的单词来判断原来:int month;int day;int year;};新:int month;int day;int year;} Date;//这个Date就是新名字。......
2022-08-03 19:19:49
164
原创 C语言学习笔记(浙大翁恺版)第十一周 结构(2)
想记录抽象物体的一连串数据,我们不想一个一个定义,此时就可以用到C语言的结构类型一个结构就是一个复合类型,其中可以包含许多不同类型的成员变量。
2022-08-01 19:14:00
515
原创 C语言学习笔记(浙大翁恺版)第十一周 结构(1)
枚举内部计数规则和数组一样,从0开始计数,因此如果在元素最后加一个名字,这个名字代表的数字就是前面名字的计数量。在程序中我们经常避免直接出现数字,用具体的单词或者别的能表达意思的字符串代替,这样可以大幅提升可读性。此时如果需要遍历所有枚举量、或者需要建立用枚举量做下标的数组时,就可以轻松得知枚举量的个数。现在我们有一种更加方便的方式来存放罗列起来的数据,即枚举。这种方式要比constint定义更加方便。...
2022-07-31 17:13:50
195
原创 C语言学习笔记(浙大翁恺版)第十周 字符串函数(2)
其中的CtrlC会让shell直接关闭程序,而CtrlD在shell收到后,在末尾填一个-1,程序读到-1,程序就正常结束了。这里有一个小技巧先把查找到的字符位置处更换为0,此时输出这个字符串,就得到需要的部分,然后再将其换回原来的字符,其他功能仍然可以正常运行,数组改动前后也没有变化。当然不行,要知道,放在格式化输出符后面比较数组,实质是比较两个数组的地址是否相同。因此在处理字符串时,要么把它当作数组,把参数作为下标,要么就把它当作指针,移动指针实现自增,指针加减实现返回值。...
2022-07-16 11:44:13
635
1
原创 C语言学习笔记(浙大翁恺版)第十周(字符串)(1)
10.1.1 字符串char word[]={'h','e','l','l','o','!'};定义这样一个字符数组,它是一串字符,但并不是C语言的字符串,不能用字符串的方式做计算那么如何定义一个字符串?char word[]={'h','e','l','l','o','!','\0'};这两句的区别在哪呢?很显然,在数组中多加了第七项 word[6]='\0'之前学过的转义字符,其中就有\0的存在,其意义就是0,可以在这个位置直接放一个0,不加单引号和反斜杠。这个0就让这w
2022-07-11 15:42:10
451
原创 C语言学习笔记(浙大翁恺版)第九周(指针部分)(2)
9.2.1 指针运算1+1=2?char ac[]={0,1,2,3,4,5,6,7,8,9,};char *p = ac;printf("p =%p\n",p);printf("p+1=%p\n",p);两个地址相差1int ai[]={0,1,2,3,4,5,6,7,8,9,};int *q = ai;printf("q =%p\n",q);printf("q+1=%p\n",q);两个地址相差4为何如此?很简单,char变量占据一字节而in.
2022-05-05 17:59:55
924
原创 C语言学习笔记(浙大翁恺版)第九周(指针部分)(1)
前体知识:格式控制符%p可以输出十六进制格式的地址;%lu可以输出无符号十进制整数地址。9.1.1 取地址运算运算符&我们在第一周就见过这个符号“&”了,当时我们规定scanf("%d",&x);中变量之前一定要有这个符号今天我们要开始学习关于它的知识,&,与加减乘除同类的运算符。&:获得变量的地址,它的操作对象必须是变量。那地址是个什么值呢?我们用代码试一下#include<stdio.h>int main(){in.
2022-05-04 18:16:36
929
2
原创 C语言学习笔记(浙大翁恺版)第八周(数组部分)
8.1.1 初试数组在循环中我们有一个例子:计算用户输入的整数平均数,以-1结尾。当时的方法是:读入用户输入的每个数字,统计输入的个数,然后用输入的数字之和除以个数。我们用累加的方法得到最后的和,不需要记录每个数字是多少。那么问题做些更改,又该怎么做?容易知道,我们需要记录每个数字,那么如何记录很多数?int num1,num2....?我们需要一种新的手段:数组int number[100];scanf("%d",&number[i]);定义了一个
2022-05-02 01:22:31
1788
原创 C语言学习笔记(浙大翁恺版)第七周(函数部分)
7.1.1 初见函数在第四周时候我们的作业中编写了一个计算素数和的程序高亮的部分作用是判断i是不是素数,功能单纯,占用版面大,因此我们可以将它独立出来,稍微更改一下数字。而主函数内我们也做些更改至今我们就完成了将一个全部功能都在主函数下的程序分为专用函数和主函数的转变。由此我们就可以将功能性代码和执行性代码分开,实现代码复用,精简程序。如果同样的功能使用几乎完全一样的代码,一直复制粘贴代码,进行code duplication,这是程序质量不良的一种表现7.1...
2022-04-24 21:14:34
2474
原创 C语言学习笔记(浙大翁恺版)第六周(2)
6.2.1 逻辑类型bool 类型:#include<stdbool.h> 包含该头文件之后可以使用bool、true、false实际上并没有bool这种类型,实际上这些变量还是整数,定义、输出还是可以用整数。6.2.2 逻辑运算逻辑运算是对逻辑量进行的运算,结果只有0或1。逻辑量是关系运算或逻辑运算的结果如果像平时做数学一样写4<=x<=6,则计算机会先判断4<x,得到的结果是0或1。然后再判断0或1是否<=6,结果为真,...
2022-04-24 11:43:38
1275
原创 C语言学习笔记(浙大翁恺版)第六周(1)
6.1.1 C语言其他的基本数据类型sizeof:属于(静态)运算符,可以给出某个类型或者变量在内存里占据的字节数。其结果在编译的时候就已经确定,与程序执行阶段无关,所以不能用来计算。但是可以放表达式,比如int a;sizeof(a+1.0)结果为->8,因为C自动转换了这个表达式,其类型为double,所以字节长度是8,并非真正的计算比如:sizeof(int) sizeof(i)6.1.2 整数类型i...
2022-04-24 10:20:28
906
原创 C语言学习笔记(浙大翁恺版)第五周(2)
5.2.1 循环控制素数:那么如何写一个程序来判断输入的数是不是素数呢?很简单,让输入的数依次从2到它自己-1求余。如果结果为0则不是素数。但是这样会出现一些问题,如果按这个思路写代码会得到:int i;scanf("%d",&x);for(i=2;i<x;i++){ if(x%i==0) { printf("不是素数"); }}那么如果我给一个有多个公因数的数进去,比如6,6可以被2和3整除,所以程序会输出两遍“不是.
2022-03-28 13:38:33
1144
原创 C语言学习笔记(浙大翁恺版)第五周(1)
5.1.1 for循环某天,翁恺老师叫闺女帮他带几个包子回家...于是闺女带了24(4!)个包子回家(闺女是计算机吗hhhh)那么如何让计算机计算阶乘呢?如果我想做个计算阶乘的程序,该怎么写?我的需求是:我输入一个数,然后程序计算给出我这个数的阶乘结果。那么我们分析一下,这个程序需要什么数据,又会产生什么数据。那么显然我们要定义一个接受n的变量且为整型, 要一个存储结果的变量,还需要一个从1递增到n的变量。于是可以得出以下代码:int n;scanf("%d",&n);
2022-03-27 11:20:34
496
原创 C语言学习笔记(浙大翁恺版)第三周(2)
3.2.1 嵌套的if-else之前我们比较过两个数的大小,那么如何比较三个数的大小?可以先比较两个数的大小,胜出者再去和第三个数比较,其算法图解为:#include <stdio.h>int main(){ int a, b, c; int max = 0; printf("请输入三个整数:"); scanf("%d %d %d", &a, &b, &c); if (a > b) {
2022-03-05 17:36:28
562
原创 C语言学习笔记(浙大翁恺版)第三周(1)
3.0 0的故事电报时代为了将0和O区分,为0设计了一种特殊的字体这是一个诡计多端的03.1.1 做判断上周课程中的时间差一例中,小时数出现借位的话该如何调整呢?我们之前的方法是直接换成分钟再变化。小时数如果出现借位而我们还直接加减的话,就会出现负数的情况。那么有没有一种方法能预先判断小时数是否借位再对计算方法进行调整呢?这就要引出今天的C语言判断语句了#include<stdio.h>int main(){ int hour1,minute1;
2022-03-05 15:53:13
751
原创 数据库系统概论 第一章 绪论
绪论数据库地位:数据管理的最新形式,计算机科学的重要分支。 信息系统的核心和基础。 其规模,信息量的大小和使用频度是作为衡量国家信息化程度的标志。1.1数据库系统概论数据:描述事物的符号记录。数据的特点是其语义:数据的含义,数据和其语义是分不开的。比如一个人的简历里的东西,如出生年份2001是一个数据,在此这个数字的语义是出生年份,但换个地方就不一定。数据库:是长期储存在计算机内的、有组织的、可共享的大量数据的集合。解释:如今的数据都是需要长时间存储的。 用数据模型来组织
2022-03-04 00:11:51
477
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人