二叉树理论基础
推荐视频——关于二叉树,你该了解这些!| 二叉树理论基础一网打尽,二叉树的种类、二叉树的存储方式、二叉树节点定义、二叉树的遍历顺序_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili
理论基础,这些都是我们平时刷题应该掌握的内容。
把基础打牢了,有了逻辑基础,学的才会更好一些。
1.二叉树的种类1.满二叉树:
在一棵二叉树中,如果所有分支结点都存在左子树和右子树,并且所有叶子都在同一层上,这样的二叉树叫做满二叉树。
结点数量2^k-1
2.完全二叉树
除了底层以外,其它层都是满的,底层是从左到右连续的。
这个是二叉树
这个就不是二叉树,底层不连续。
满二叉树一定是一棵完全二叉树,但完全而二叉树不一定是满的。
3.二叉搜索树
在它里面的结点顺序,左子树的所有结点都小于中间结点,右子树的所有结点都大于中间结点。
二叉搜索树对结点的布局是没有要求的,元素有顺序就可以。
平衡二叉搜索树
左子树和右子树的高度差不能超过1。
2.二叉树的存储方式1.顺序存储
用这个字符数组来保存二叉树。
*2i+1——左孩子,2 i+2——右孩子。*
2.链式存储一般用的都是链 ...
KMP算法
强烈推荐Carl老哥的视频!!!
多看几遍肯定是可以学会的。
理论篇——帮你把KMP算法学个通透!(理论篇)_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili
求Next数组代码篇——帮你把KMP算法学个通透!(求next数组代码篇)_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili
1.什么是KMP算法 KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt提出的,因此人们称它为克努特—莫里斯—普拉特操作(简称KMP算法)。(百度百科)
2.KMP算法能解决哪些问题解决字符串匹配问题
给出文本串和模式串,用两层for循环进行匹配,进行暴力匹配,时间复杂度是O(m,n).其中m是模式串长度,n是文本串长度。
3.KMP算法是如何运行的给出两个要匹配的串,文本串和模式串。
第一次匹配
第二次匹配
跳到b处继续进行匹配。
这就是KMP算法。
4.KMP算法是如何进行跳的用到了很重要的表——前缀表。
那么,KMP算法为什么不用hash表或者其它表呢?
前缀表的特性:
如何实现:当进行到不匹配的元素时,找到 ...
JAVA基础知识总结
6.17日偶然发现里面代码块的格式崩了,哭哭了。
改代码块的格式实在是太累了
大火看我CSDN上改好的这个吧
这个我就不改了❤️
JAVA基础知识总结_半生瓜のblog-CSDN博客
1.JAVA基础1. Hello worldpsvm自动生成方法
**sout自动生成system out **
123456public class Hello { public static void main(String[] args) { System.out.println("hello sb!"); }}
2. 注释单行注释://
多行注释: /**/
文档注释:JavaDoc /** * * * */(用处不大)
3.标识符和关键字Java所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。
所有的字标识符都应该以字母(A-Z,a-z)、美元符($)、或者下划线(_)开始。
首字符之后可以是(A-Z,a-z)、美元符($)、下划线(_)或数字的任何字符组合
不能使用关键字作为变量名 ...
栈的应用---四则运算表达式求值
栈的应用——四则运算表达式求值
后缀表达式计算先将 数学表达式 用后缀(逆波兰)表示法表示。
运算规则:从左到右遍历表达式每个数字和符号,遇到数字就进栈,遇到符号,就将处于栈顶的两个数字出栈,进行运算,运算结果进栈
运算流程图如下:
将中缀表达式转化为后缀表达式规则:从左到右遍历中缀表达式的每个数字和符号吗,若是数字则输出,即称为后缀表达式的一部分;若是符号,则判断其与栈顶符号的优先级,是右符号或优先级低于栈顶符号(乘除优先加减)则栈顶元素依次出栈并输出,并将当前符号进栈,一直到最终输出后缀表达式为止。
C语言动态内存开辟
1.动态内存管理1.为什么存在动态内存管理当前我们知道的内存的使用方式主要是两种。
1.创建一个变量
int a = 10;//局部变量 - 在栈区中开辟空间
int g_a = 10;//全局变量 - 静态区
在内存中,分为三个区域
栈区-局部变量、函数的形参、
堆区-动态内存分配-malloc-free-calloc-realloc
静态区-全局变量、静态变量、statint int a = 10;
2.创建一个数组
int arr[10] = { 10 };(局部范围-栈区,全局范围-静态区)
在空间上开辟10个字节的连续空间。
12345678910111213struct S{ char name[20]; int age;};int main(void){ struct S arr[50];//50个struct S类型的数据 //如果只有30个学生,就会有空间上的浪费 //如果有60个学生,空间又会不够 //数组的元素个数,是给定的一个常量 return 0;}
C语言是可以创建变长数 ...
基于C语言的计算机网络编程(初识)
1.计算机网络概述1.最早的广域网在通信双方或多方之间,通过电路交换建立电路连接的网络。
2.电路交换网的特点
建立链接->使用链接->释放链接
物理通路被双方独占。
计算机数据是突发式出现在数据链路上的,而电路交换网的建立链接、使用链接、释放链接三个过程使得传输效率太低,故电路交换不适合传输计算机数据。
3.计算机的网络要求
不是为了打电话
结构简单,可靠的传输数据
能够连接不同种类的计算机
所有网络节点同等重要
必须由冗余的路由
最早的计算机网络-美国创造的ARPA,最早的ARPA无法连接不同类型的计算机和不同类型操作系统。
4.分组交换 分组交换——通过标有地址的分组进行路由选择传送数据,使通信通道在传送期间被占用的一种交换方式。
分组的组成:每个分组都有首部和数据段组成。
5.交换方式交换方式——存储转发
节点收到分组,先暂时存储下来,再检查其首部,按照首部中的目的地址,找到合适的节点转发出去。
特点:
以分组作为传输单位
独立的选择转发路由
逐段占用,动态分配传输带宽。
6.因特网的发展史从的那个APPANET向因特网的发展过程
1983年 ...
C语言实现字母数字雨小程序
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132//字母数字雨#include<stdio.h>//随机数头文件#include<stdlib.h>//包含easyX图形库 可以使用绘图函数 以及鼠标操作#include<graphics.h>#include<conio.h>#define STR_SIZE 20//没串雨的字符个数#define RAIN_NUM 128//雨的数量#define WIDTH 960# ...
自定义结构类型(2)
结构体参考视频:https://www.bilibili.com/video/BV1oi4y1g7CF?p=58
大纲:
结构体的声明
结构体的自引用
结构体内存对齐
结构体传参
结构体实现位段(位段的填充&可移植性)
char short int long short float double -这些都叫做内置类型,是C语言自己的类型
对于一些复杂对象,光用内置函数是不够的。
复杂类型(自定义类型)-结构体、枚举、联合体。
1.结构体的声明
结构体的基础知识:结构体是一些值的集合,这些值称为成员变量。结构体的每个成员可以是不同类型的变量。
结构体的声明
1234struct Stu//随便定义名字{ member-list;}vairable-list;
例如描述一个学生
1234567891011121314151617181920212223#include<stdio.h>//声明一个结构题类型//声明一个学生类型,通过学生类型来创建学生变量(对象)//描述学生;属性-名字-电话-性别struct Stu ...
C语言实现飞翔的小鸟小游戏
参考视频https://www.bilibili.com/video/BV1Xo4y1R7hs
缺点:撞柱子功能暂未实现
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821 ...
C语言推箱子小程序
参考视频https://www.bilibili.com/video/BV1By4y1a79o?t=4428
包括黑窗界面和图形界面
BUG:当人物进入到目的地的时候就动不了了
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173 ...
C语言贪吃蛇小程序
参考视频
https://www.bilibili.com/video/BV1LN41197zV?from=search&seid=15462998985727977257
代码有点缺陷:1.食物有可能会生成在吃不到的地方
2.吃掉食物的音效添加失败
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 ...
自定义数据类型
位段1什么是位段位段的声明和结构是类似的,有两个不同
1位段的成员必须是int、unsigned int 或signed int 。
2位段的成员名后边有一个冒号和一个数字。
1234567891011比如struct A{ int_a:2; int_b:5; int_c:10; int_d:30;};A就是一个位段类型那位段A的大小是多少?
1234567891011121314151617#include<stdio.h>//位段 位是二进制位struct S{ //后面的:是所对应变零需要的比特位 int a:2; int b:5; int c:10; int d:30; //一共47个比特位——6个字节就够了*8=48bit};int main(void){ struct S s; printf("%d\n",sizeof(s));//占8个字节}
2位段的内存分配1位段成员可以是int unsigned int sig ...
C二级错题积累(5)
常用的连续存储管理技术有固定分区存储管理和可变分区存储管理。
程序流程图中带有箭头的线段表示的是控制流。
若二叉树没有叶子结点,则为空二叉树。
带链栈的栈底指针是随栈的操作而动态变化的。
若带链队列中只有一个元素,则对头指针与队尾指针必定相同。
清晰第一,效率第二的论点已经成为当今主导的程序设计风格。
需求分析方法可以分为结构化分析方法和面向对象分析方法两大类。结构化分析方法的常用工具:数据流图(DFD图)、数据字典(DD)、判定表、判定树。
数据库应用系统包括数据库、数据库管理系统、人员(数据库管理员和用户)、硬件平台、软件平台、应用软件、应用界面7个部分。
数据库设计是数据应用的核心。
在数据库系统中,数据模型包括概念模型、逻辑模型和物理模型。
从关系中找到满足给定条件的元组的操作称为选择。
计算机系统由硬件系统和软件系统组成。
I/O方中的程序查询方式是指当 CPU需要执行I/O操作时,程序将主动查询I/O设备是否准备好。
采用循序存储的完全二叉树属于非线性结构。
应避免滥用goto语句。
需求分析阶段的工作可以分为4个方面:需求获取、需求分析、需 ...
C二级错题积累(4)
在栈中,栈项指针的动态变化决定栈中元素的个数。
详细设计的人物是为软件结构体中的每一个模块确定实现算法和局部数据结构,用某种选定的表达工具表示算法和数据结构的细节。
扇出指由一个模块直接调用的其他模块个数。
按照传统的数据模型分类,数据模型分为层次模型、网状模型、关系模型。
数据库管理系统能实现对数据库汇总数据的查询、插入、修改和删除,这类功能称为数据操纵功能。
机器周期的同步标准是CPU访问存储器一次所需要的时间。
一个正在运行的进程由于所申请的资源得不到满足,进程将从运行状态变迁为等待(阻塞)状态,需要调用阻塞进程原语。
软件测试的实施步骤是单元测试、集成测试、确认测试。
数据库管理系统中关系代数的运算有:投影运算、选择运算、笛卡尔积、交、连接等。
当一个进程在运行过程中释放了系统资源后要调用唤醒进程原语。
机器数补码的符号位取反即是偏移码。
所有的线性结构都可以采用顺序存储结构。
在希尔排序法中,没经过一次数据交换后能消除多个逆序。
对象实现了数据和操作(方法)的结合,其实现的机制是封装。
软件需求规格说明的内容不包括算法的详细设计。
数据库系系统 ...
C二级错题积累(3)
整数在计算机中存储和运算通常采用的格式是补码。
在操作系统中,将文件名转化为文件存储地址的结构是文件目录。
在长度为n的有序链表中进行查找,最坏情况下需要比较的次数为n。
对象是由描述该对象属性的数据以及可以对这些数据施加的所有操作封装在一起构成的统一体。一个对象通常可由对象名(标识)、属性和操作三部分组成。
软件工程的三要素是方法、工具和过程。
数据库管理阶段的数据库系统的基本特点:数据集成性、数据的共享性高,冗余性低、数据独立性高、数据统一管理与控制。
对于关系模式,若其中的每个属性已经不能再分为简单项,则它属于第一范式。
在实体联系模型中,实体是客观存在并且可以相互区别的事物。
一个正在运行的进程由于所申请的资源得不到满足要调用阻塞进程原语。
进程是程序的执行过程。
循环队列是队列的一种顺序存储结构。
栈先入后出,队列先进先出。
结构化程序的基本结构有:循序结构、选择(分支)结构和重复(循环结构)。
软件是指程序、数据和文档的集合。
数据库中存储的是数据以及数据之间的联系。
在关系数据库设计中,关系模式是用来记录用户数据的二维表。(关系模式采用二维 ...
C二级错题积累(2)
要是用外存储器中的信息,应先将其调入内存储器。
进制是程序的执行过程。
循环队列是队列的一种顺序存储结构。
栈先进后出,队列先进先出。
结构化程序的基本结构有:顺序结构、选择(分支)结构和重复(循环结构)。
软件是指与计算机系统操作有关的计算机程序、规程、规则,以及可能有的文件、文档及数据。
在数据库中存储的是数据以及数据之间的联系。
关系模式是用来记录用户数据的二维表。
在一C语言程序中可以进行多种算法的实现,对算法的个数没有规定。
C语言中标识符由字母、下划线、数字组成,且开头必须是字母或下划线。
赋值运算符的优先级高于逗号运算符的优先级。
数组定义后,不可以对数组整体赋值。
全局变量的作用域是从声明处到文件的结束。
关键字typedef的作用只是将C语言中的已有的数据类型作了置换,并不是增加新的类型。
当对文件的读(写)操作完成之后,必须将他关闭,否则可能导致数据丢失。
选择中打开一个已存在的文件并进行了写操作后,原有文件中的全部数据不一定被覆盖,也可以对源文件进行追加操作等。
选项中在一个程序中当对文件进行了写操作后,不用先关闭该文件然后再打开 ...
C二级错题积累(1)
计算机完成一条指令所花费的时间称为一个指令周期。
顺序程序具有顺序性、封闭性和可再现性的特点,使得程序设计者能够控制程序执行的过程(包括执行顺序、执行时间),对程序执行的中间结果和状态可以预先估计,这样就可以方便地进行程序的测试和调试。
为了降低算法的空间复杂度,主要应减少输入数据所占的存储空间以及额外空间,通常采用压缩存储技术。
算法的计算工作量是用算法所执行的基本运算次数来度量的,而算法所执行的基本运算次数是问题规模(通常用整数)表示的函数。
算法的复杂程度与程序的编制无关。
算法需要考虑可行性、确定性、有穷性等。
栈按先进后出的原则组织数据,所以入栈最早的元素最后出栈。队列按先进先出的原则组织数据,所以入队最早的元素最先退队。
树的总的结点数为树中所有结点的度数之和再加1.
结构化程序设计的目的:通过设计结构良好的程序保证程序动态执行的正确性,使程序易理解、易调试、易维护,以提高软件开发的效率,减少出错率,减少出错率,因此结构化程序强调程序的易读性。
系统软件是管理计算机的资源,提高计算机的使用效率,为用户提供各种服务的软件,如操作系统、数据库管理、编译程序、 ...
3月C语言二级(2)
4什么是字符常量单引号括起来,中间只有一个字符。“a”,’abc’都是不对的
5什么是字符串常量双引号括起来,中间由若干字符和转义字符组成。
例如:“abc” “acb\n”
6字符计算‘B’ - ‘A’ = 1
‘a’ - ‘A’ = 32
2字符变量1定义形式: char 变量名[=值]例如:
char a = ‘a’;
char a = 97;
3字符的输入输出printf中应用格式控制符%c在相应位是输出字符。]
scanf中应用格式控制符%c接收字符
注意:
在scanf中要一次输入完全部字符,中间不要按tab,空格,回车,因为tab,空格、回车,也是字符,会被接收
字符输出:putchar(字符)
字符输入:变量= getchar();
注意:空格、tab、回车会被接收
4程序举例重点算法 字母大小写转换
例1:把从终端输入的小写字母转换成大写字母,其他字符不变
分析:
1小写字母转大写需要减去32
2如何判断小写字母,在’a’到’Z’之间的字符
例2:统计字符中大写字母和小写字母的个数
第七章 函数大纲分析
1库函数的正确调用
2函数的定义方法
3函数的 ...
陈奕迅-《苦瓜》
《苦瓜》
苦瓜又叫做半生瓜,刚吃的时候苦,等到感觉不苦的时候,也已走过半生。
是每个人天生都含着金钥匙出生,一路上一直是顺风顺水的人,也是少之又少,我们绝大多数的普通人,或多或少,或大或小,都会经历一些磨难,
“真想不到当初我们也讨厌吃苦瓜”
有些你该经历的事情,当时你选择了逃避,当后来承受了那样做的后果,才会
1“今天竟吃得出那睿智愈来愈记挂”,
或者说,这些磨难都是对我们的考验,谁没年少轻狂过,谁没有过梦想,年轻时候对未来的一切都是向往的,同时也会因为自己的年轻就放纵了自己,
123“青春的快餐只要求快不理哪一家” “哪有玩味的空档来欣赏细致淡雅”
总有一天你会彻底明白,你曾经犯下的错误,留下的遗憾,总有一天会释怀,但是青春早已随风而去,
123“却在某萧瑟晚秋深夜” “忽尔明了了 而荒野便碎落”
现在的你或许对未来感到迷茫,或许向往,正处于人生低估,或正是春风得意时,但不要忘了你想要做的事,想要成为什么样的人,即便我们大多数人的生活注定不能过得辉煌, 我们要做的,就是在平 ...
3月C语言二级
二级C语言程序设计
第一章 程序的概念1程序的概念程序是指令的集合
指令-编译-计算机运行
指令:编写程序的执行程序(要干什么的步骤)
编译:将程序转换为二进制(怎么干)
计算机运行:将二进制运行出结果
2 C程序的运行过程.c文件(源程序)——.obj(目标程序——二进制程序)——.exe(可执行程序(debug文件夹中))——计算机运行
——连接程序(运行库)
3 程序设计的步骤(1)确定数据结构
(2)确定算法——有穷性(步骤有限)
——确定性(含义确切)
——可行性(能够实现)
有零个或多个输入(数据输入)
有一个或多个输出(数据输出)
(3)编码
(4)在计算机上调试程序
(5)整理并写出文档资料
4结构化程序三大结构:顺序结构:程序从上到下顺序执行
选择结构:程序可以沿着不同路径执行
循环结构:指定程序重复执行
第二章 C程序设计的初步知识1大纲分析(1)C的数据类型(基 ...