- 博客(22)
- 收藏
- 关注
原创 第六章—树
树树的基本内容树的定义树的基本术语树的存储结构顺序存储结构链式存储结构二叉树二叉树的定义二叉树的主要性质二叉树的存储结构顺序存储结构链式存储结构二叉树的遍历算法先序遍历中序遍历后序遍历层次遍历二叉树遍历算法的改进二叉树深度优先遍历算法的非递归实现先序遍历非递归算法中序遍历非递归算法后序遍历非递归算法线索二叉树树和森林与二叉树的相互转换树转换成二叉树二叉树转化为树森林转换为二叉树二叉树转换为森林树和森林的遍历树的遍历森林的遍历赫夫曼树和赫夫曼编码与赫夫曼树有关的概念赫夫曼树的构造原理赫夫曼编码扩展:C++语法
2021-06-15 07:48:44
6717
原创 8086指令系统
8086指令系统数据传送指令通用传送指令一般传送指令MOV堆栈操作指令PUSH和POP交换指令XCHG查表转换指令XLAT输入输出指令取偏移地址指令其他传送指令算术运算指令加法指令普通加法指令ADD带进位的加法指令ADC加1指令INC减法运算乘法指令除法指令逻辑运算和移位指令逻辑运算非循环移位指令串操作指令程序控制指令无条件转移指令JMP条件转移指令JCC循环控制指令LOOP指令LOOPZ指令中断指令INT指令IRET指令处理器控制指令首先定义出要用的符号OPRD泛指各种类型的操作数
2021-06-13 10:27:24
9907
原创 8086/8088寻址方式
8086/8088寻址方式立即寻址直接寻址寄存器寻址寄存器间接寻址寄存器相对寻址基址—变址寻址基址—变址—相对寻址隐含寻址所谓寻址方式,主要是指获得操作数所在的地址的方式,在8088/8086系统中,一般将寻址方式分为两种不同的类型寻找操作数的地址寻找要执行的下一条指令的地址,即程序的地址。后者主要在程序转移或过程调用时用来寻找目标地址或入口地址。这将在调用指令(CALL)和程序转移指令(JMP)中使用的较多。在8086指令系统中,说明操作数所在地址的寻址方式可分为8种。立即寻址立即寻址方式
2021-06-13 10:26:34
10897
原创 汇编语言程序设计
汇编语言程序设计汇编语言源程序汇编语言源程序的结构表达式伪指令格式操作数重复操作符段定义伪指令设定段寄存器伪指令汇编语言源程序汇编语言源程序的结构一个完整的源程序通常由若干逻辑段组成,包括数据段、附加段、堆栈段和代码段。它们分别映射到存储器中的物理段上。每个逻辑段以segment语句开始,以ends结束,整个源程序用end语句结尾。代码段中存放源程序的所有指令码、数据、变量等则放在数据段和附加段中。程序中可以定义堆栈段,也可以直接利用系统中的堆栈段。具体一个源程序中要定义多少个段应根据实际需求来定。
2021-06-13 10:25:08
10280
原创 第五章—数组、矩阵、广义表
数组、矩阵、广义表数组两种数组的逻辑表示二维数组的行优先和列优先存储矩阵的压缩存储矩阵特殊矩阵和稀疏矩阵特殊矩阵稀疏矩阵顺序存储三元组表示法伪地址表示法稀疏矩阵链式存储邻接表表示法十字链表表示法广义表本章的数据结构是一个扩展的线性结构,表中的数据结构本身也是一个复合类型,如二维数组,可以将每个元素都看做一个一维数组的一维数组,又如广义表,表元素本身也可以是广义表。数组两种数组的逻辑表示一维数组:(a0,a1,a2,a3,a4,...,an−1)(a_0,a_1,a_2,a_3,a_4,...,a_
2021-06-13 03:23:45
7963
原创 第四章—串
串串数据类型的定义串的定义串的存储结构串的基本操作字符串模式匹配算法一般的算法KMP算法串数据类型的定义串的定义串是由0个或多个字符组成的有限序列。串中字符的个数称为串的长度,含有0个元素的串叫空串。在C语言中,可以用以下语句定义一个名为str的串。char str[] = "abcdef";说明:串通常用一个字符数组来表示。从这个角度来讲,数组str内存储字符为’a’、‘b’、 ‘c’、‘d’、‘e’、‘f’、’\0’,其中’\0’作为编译器识别串结束的标记,而串内字符为’a’、‘b’、 ‘
2021-06-08 19:27:28
8009
原创 第三章—栈和队列
栈和队列栈和队列的基本概念栈的基本概念队列的基本概念栈和队列的存储结构实现栈和队列的结构体定义顺序栈链栈顺序队链队栈的应用括号匹配计算后缀表达式结果共享栈和双端队列共享栈双端队列栈和队列的基本概念栈的基本概念栈的定义:是一种只能在一端进行插入或删除操作的线性表,其中允许进行插入或删除操作的一端称为栈顶。栈顶由一个称为栈顶指针的位置指示器(其实就是一个变量,对于顺序栈,就是记录栈顶元素所在数组位置标号的整型变量;对于链式栈,就是记录栈顶元素所在结点地址的指针)来指示。它是动态变化的,表的另一端为栈底
2021-06-03 20:33:53
8063
原创 第二章—线性表
线性表线性表的基本概念和实现线性表的定义线性表的逻辑特性线性表的存储结构常见问题线性表的结构体定义和基本操作线性表的结构体定义顺序表的操作单链表的操作双链表的操作循环链表的操作逆置问题线性表的基本概念和实现线性表的定义线性表是具有相同特性数据元素的一个有限序列。该序列中所含元素的个数叫做线性表的长度,用n表示。注意:n可以等于0,表示线性表是一个空表。线性表是一种简单的数据结构,可以把它想象成一队学生。学生人数对应线性表的长度,学生人数是有限的,这里体现了线性表是一个序列;队中所有人的身份是学生,体
2021-06-03 04:42:38
8303
原创 第一章—数据结构绪论
绪论算法的时间复杂度和空间复杂度分析算法时间复杂度例题解读算法的空间复杂度数据结构和算法的基本概念数据结构的基本概念算法的基本概念算法的时间复杂度和空间复杂度分析算法时间复杂度将算法中基本操作的执行次数作为算法时间复杂度的度量。这里所讨论的时间复杂度不是执行完一段程序的总时间,而是其中基本操作的总次数。因此,对一个算法进行时间复杂度分析的要点,无非是确定算法中哪些操作是基本操作,然后计算出基本操作重复执行的次数即可。在问题中总能找到一个nnn,可以称为问题的规模,如果要处理的数组元素的个数为n,而基本
2021-06-02 02:06:11
8617
1
原创 控制流程与大数值
控制流程Java使用条件语句和循环结构确定控制流程块作用域块(即复合语句)由一对大括号括起来的若干条简单的Java语句.块确实了变量的作用域.一个块可以嵌套在另一个块中,下面就是main方法块中嵌套另一个语句.public static void main(String[] args){ int n; ... { int k; .... }// k is only defined up to here.}但是,不能在嵌套的两
2021-01-31 16:38:59
7867
原创 StringBuilder和输入输出
构建字符串(StringBuilder的应用)有些时候,需要由较短的字符串构建字符串,例如:按键或来自文件的单词,采用字符串连接的方式达到此目的效率比较低.每次连接字符串,都会构建一个新的String对象,既耗时,又浪费空间.使用StringBuilder类就可以避免这个问题的发生.如果需要用许多小段的字符串构建一个字符串,那么应该按照下列步骤进行.首先,构建一个空的字符串构建器:StringBuilder builder = new StringBuilder();,当每次需要添加一部分内容时,就调
2021-01-31 16:37:06
10516
原创 运算符,枚举介绍与字符串
运算符详解结合赋值和运算符可以在赋值中使用二元运算符,这是一种很方便的简写形式.例如:x+=4;,等价于x=x+4;.(一般的要把运算符放在=号左边,如*=,%=)如果运算符得到一个值,其类型与左侧操作数的类型不同,就会发生强制类型转换,例如:如果x是一个int,则以下语句x+=3.5;是合法的,将把x设置为(int)(x+3.5)自增与自减运算符加一,减一是数值变量的最常见的操作.在Java中,借鉴了C++的做法,也提供了自增,自减运算符:n++将变量n的当前值加1,n–则将n的值减1
2021-01-31 16:35:55
7982
原创 Java运算符概要与数学函数
运算符概要在Java中,使用算术运算符+,-,*,/表示加减乘除运算,当参与/的运算的两个操作数都是整数时,表示整数除法,否则,表示浮点除法.整数的求余操作(有时称为取模),用%表示,例如,15/2,15%2,15.0/2.需要注意的是,整数被0除将产生一个异常,而浮点数被0除会得到无穷大或NaN结果.数学函数在Math类中,包含各种各样的数学函数,在编写不同类别的程序时,可能需要的函数也不同.要想计算一个数值的平方根,可以使用sqrt方法double x = 4;double y =
2021-01-31 16:35:17
7954
原创 Java的变量与常量
变量在Java中,每个变量都有一个类型(Type).在声明变量时,变量的类型位于变量名之前.这里列举一些声明变量的案例:double salary;int vacationDays;long earthPopulation;boolean done;可以看到,每个声明以分号结束,由于声明是一条完整的Java语句,所以必须以分号结束.变量名是一个以字母开头并由字母或数字构成的序列.需要注意,与大多数程序设计语言相比,Java中"字母"和"数字"的范围更大.字母包括’A’~‘Z’,‘a’~‘z’
2021-01-31 16:33:53
7912
原创 java语言入门_入门程序、常量
编写Java源程序在d:\day01 目录下新建文本文件,完整的文件名修改为HelloWorld.java ,其中文件名为HelloWorld ,后缀名必须为.java 。用记事本打开在文件中键入文本并保存,代码如下:public class HelloWorld{ public static void main(String[] args) { System.out.prin...
2020-02-19 22:52:27
7915
原创 c++对c语言的扩展_内联函数
inline函数c 语言中有宏函数的概念.宏函数的特点是内嵌到调用代码中去,避免了函数调用 的开销.但是由于宏函数的处理发生在预处理阶段,缺失了语法检测和有可能带来的语意差错.内联函数的基本概念C++提供了 inline 关键字,实现了真正的内嵌#include<iostream>inline int myfunc(int a,int b){ return a &l...
2020-02-01 22:18:56
7947
原创 C++对C语言的扩展_引用
在上一篇文章中,我们讲述了c++对c语言的加强,在这篇文章中,我们开始学习c++对c语言的扩展_引用引用变量名变量名实质上是一段连续存储空间的别名,是一个标号(门牌号).通过变量来申请并命名内存空间通过变量的名字可以使用存储空间.问题:对一段连续的内存空间只能取一个别名吗?引用的概念变量名,本身是一段内存的引用,即别名(alias).引用可以看作一个已定义变量的别名....
2019-11-20 20:42:08
8021
原创 C++对C语言的增强
前面我们了解了namespace的概念以及应用,现在我们对比一下c和c++,看看c++对c有哪些增强"实用性"增强C语言中的变量都必须在作用域开始时定义.C++中更强调语言的"实用性",所有变量都可以在需要使用时定义.#include<iostream>int main(){ int i=0; cout<<"i = "<<i<<e...
2019-11-16 22:37:20
7966
原创 c++的namespace命名空间
c++的namespace命名空间c++的namespace命名空间一.<iostream>l和<iostream.h>namespace概念下使用c++标准库c++命名空间的定义及其使用c和c++命名空间的比较c++命名空间的定义c++命名空间的使用c++命名空间的编程实践总结前面我们对c++语言进行了初步的认识,接下来我们将讲解c++语言的语法内容,首先我们来看看命...
2019-11-14 21:25:45
8186
原创 C++综述
C++综述综述C++作者综述C++作者c++的作者:Bjarne Stroustrup(本贾尼·斯特劳斯特卢普)博士,C++之父
2019-11-11 23:14:12
8111
1
原创 c++语言的基本入门
我们开始c++的学习写在开始计算机编程语言:关于c++语言c++语言的应用:愉快的入门(我们采用与c语言对照的方式入门):首先我们来分析一个最简单的程序:对语句进行详细描述之后,接下来,我们对一些细节进行分析:写在开始计算机编程语言:Remember that a program is just a sequence of instructions telling a computer wh...
2019-11-11 19:49:57
11534
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人