- 博客(46)
- 收藏
- 关注
原创 数据结构初阶之堆的介绍与堆的实现
如果有一个关键码的集合,把它的所有元素按完全二叉树的顺序存储在一个一维数组中,并满足:,则称为小堆(或大堆)。将的堆叫做的堆叫做。(1)堆中某个结点的值总是不大于或不小于其父结点的值;(2)堆总是一棵完全二叉树。对于具有 n 个结点的完全二叉树,如果按照从上至下从左至右的数组顺序对所有结点从 0 开始编号,则对于序号为 i 的结点有:(1)若 i > 0,i 位置结点的双亲序号:( i - 1 ) / 2;i = 0 时,i 为根结点编号,无双亲结点。
2025-01-30 07:54:55
551
原创 数据结构初阶之队列的介绍与队列的实现
进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有FIFO (First In First Out) 的特点。:进行的一端称为:进行的一端称为。
2025-01-25 18:16:47
765
原创 数据结构初阶之栈的介绍与栈的实现
一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行称为,另一端称为。栈中的数据元素遵守LIFO(Last In First Out)的原则。:栈的操作叫做,入数据在。:栈的操作叫做。出数据也在。
2025-01-25 14:58:11
1045
原创 重生之我在21世纪学C++—类
类的关键字是class,类中主要是由两部分组成,分别为成员变量和成员函数。class tagpublic:成员变量列表;成员函数列表;// 一定要注意后面的分号class是用来定义类类型的关键字,在类中可以定义成员函数和成员变量。public是类成员权限访问限定符,标志类中的成员可以公开访问及调用。*为什么结构体中没有 public 呢?原因是:结构体中的成员变量和成员函数,默认就是公开的,而 class 中的成员变量和成员函数默认是私有的( private )。
2025-01-17 10:13:09
863
原创 重生之我在21世纪学C++—结构体
结构体类型声明的关键字是structstruct tag成员变量列表;//成员变量可以有1个,也可以有多个成员函数列表;//成员函数可以有,也可以没有} 结构体变量列表;//在声明结构体类型的同时,创建结构体变量,可以有多个,中间使用逗号隔开例如:(1)在创建变量的时候,结构体类型中的struct 就可以省略了。(2)在创建结构体变量的时候,结构体变量的名字不能和结构体类型的名字相同。(3)声明的结构体类型是不占用内存空间,当使用结构体类型创建变量后,才会向内存申请了空间。
2025-01-17 08:59:15
771
原创 重生之我在21世纪学C++—函数与递归
在了解库函数之后,我们可以知道其实库函数的功能是有限的,在实际开发过程中还是得根据需要将代码封装成自定义的函数。自定义的函数就是自己设计和实现的函数。函数的实现就是函数的定义。函数的参数部分需要交代清楚:参数个数,每个参数的类型是啥,形参的名字叫啥。以定义一个加法函数为例:给加法函数取名: Add ,函数 Add 需要接收2个整型类型的参数,函数计算的结果是整型,即返回一个整型。
2025-01-14 13:19:17
967
原创 重生之我在21世纪学C++—string
string 字符串是一种更加高级的封装,string 字符串中包含大量的方法,这些方法可以使得字符串的操作变得更加简单。如果 string 使用的好,慢慢你就不想使用字符数组来存放字符串了,因为更简单嘛。 C++ 将字符串直接作为一种类型,也就是 string 类型,使用 string 类型创建的对象就是 C++ 的字符串。使用 C++ 中提供的 string 时,必须添加头文件 <string> 。(1)string s1 表示创建空字符串,相当于创建整型 int a,但未给 a 一个初始值。(2)st
2025-01-11 14:21:12
1080
原创 重生之我在21世纪学C++—一维数组
存放在数组中的值称为。数组在创建的时候需要指定数组的和数组的。指定的是数组中存放的,可以是:char、short、int、float 等,也可以自定义的类型;是数组的,这个名字是自定义的,根据实际情况,要求取的名字要有意义:是用来的,数组的大小根据实际需求指定就可以。注意:可以使用 const 定义常量的方法,来指定数组的大小。
2024-12-09 21:45:50
789
2
原创 重生之我在21世纪学C++—关系、条件、逻辑操作符
条件操作符也叫三目操作符,需要接收三个操作数exp1?条件操作符的计算逻辑是:如果exp1 为真,exp2 计算,exp2 计算的结果就是整个表达式的结果;如果exp1 为假,exp3 计算,exp3 计算的结果就是整个表达式的结果。这种三目操作符和 if 语句的逻辑非常相似,就是根据 exp1 的结果来选择执行 exp2,或者 exp3。一般使用在简单的逻辑判断中。举例:在这道题目中,输入3个整数,要求输出最大的整数。
2024-12-08 10:42:57
779
原创 重生之我在21世纪学C++—if-else语句与switch语句
if 语句的语法形式如下:if (表达式) 语句;表达式成立(为真),则语句执行,表达式不成立(为假),则语句不执行。在C++中,0表示假,非0表示真。表达式的结果如果是 0 ,则为假,所以语句不执行;表达式的结果如果不是 0 ,则为真,所以语句执行。if...else... 语句的语法形式如下:if ( 表达式 ) 语句1;else 语句2;以判断一个数的奇偶性为例:注意:(1)if 和 else 的后边是没有分号的!如果if或者else语句后面加上分号,则会被当成一条空语句,即(2)if
2024-12-06 14:10:28
987
原创 重生之我在21世纪学C++—C++输入输出(上)
getchar() 和 putchar() 是属于 C 语言的库函数,C++是兼容 C 语言的,所以 C++ 中只要正确包含头文件就可以正常使用这两个函数。(C语言:<stdio.h> C++:<cstdio>)
2024-12-05 23:37:12
983
原创 重生在我在21世纪学C++—赋值操作符、类型转换、单目操作符
在叫在,这叫。//这叫初始化a = 200;//这叫赋值, = 就是赋值操作符赋值操作符是⼀个随时可以给)赋值的操作符,赋值操作符是把右边的值赋值给左边。
2024-12-05 17:22:17
1012
原创 数据结构初阶之顺序表的介绍与动态顺序表的实现
一、线性表线性表(linear list)是由 n 个具有相同特性的数据元素组成的有限序列。线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串...线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储。二、顺序表1、概念与结构顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。顺序表和数组的关系:(1)顺序表的底层结
2024-12-04 12:43:43
1555
原创 重生之学C++篇—算术操作符
在写代码的时候,一定会涉及到计算。为了方便运算,C++提供了一系列的操作符,其中有一组操作符叫做。,这些操作符都是,虽然是不同的翻译,但是意思是一样的。//加法运算//减法运算//乘法运算//除法运算,得到的是//取余运算,得到的是易错点:(1)/ 除法的操作符,,如果除数为 0,程序就会崩溃;(2)% 取模操作符的计算结果是两个操作数进行整除运算后的。(3)% 取模操作符的操作数,如果对浮点型进行取模运算,编译器会报语法错误。
2024-12-04 00:12:35
481
原创 重生之学C++篇—变量与常量
define 常量名 内容这里定义的 M、CH、PAI 都是常量,可以直接使用,但是不能被修改。使用 #define 定义常量的时候是不关注类型的,只关注常量的名字叫什么,常量的值是多少,编译在处理这种常量的时候就是直接替换,在出现常量名字的地方,全都替换成常量的内容。const 类型 常量名字 = 常量值;如:const double PI = 3.14159;习惯上这种常量的名字一般会写成大写,而普通变量的名字不会全大写,这样就可以做一个区分。
2024-12-03 16:49:39
902
原创 数据结构初阶之算法复杂度
空间复杂度是一个数学表达式,用于衡量算法在运行过程中需要额外临时开辟的空间。它并非程序占用的字节数,而是计算变量的个数,因为通常情况下每个对象的大小的差异不大。空间复杂度计算规则与时间复杂度类似,也使用大 O 渐进表示法。需要注意的是,函数运行时所需的栈空间(存储参数、局部变量、寄存器信息等)在编译期间已经确定,因此空间复杂度主要通过函数在运行时显示申请的额外空间来确定。
2024-12-02 17:09:37
877
2
原创 C语言预处理详解
举例:#define MAX 1000 //用MAX表示1000#define REG register //为 register这个关键字,创建一个简短的名字REG;) //用更形象的符号来替换一种实现(死循环)case //在写case语句的时候自动把 break写上// 如果定义的 stuff过长,可以分成几行写,除了最后一行外,每行的后面都加一个反斜杠(续行符。
2024-11-27 17:28:28
1073
原创 C语言动态内存管理的讲解
C语言程序内存分配的几个区域:1、栈区(stack):在执行函数时,函数内局部变量的存储单元都在栈上创建,函数执行结束时这些存储单元会被自动释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。栈区主要存放运行函数而分配的局部变量、函数参数、返回数据、返回地址等。2、堆区(heap):一般由程序员分配释放,若程序员不释放,程序结束时可能由 OS(操作系统)回收。3、数据段(静态区)(static)存放全局变量、静态数据。程序结束后由系统释放。4、
2024-11-25 17:44:50
890
原创 通关C语言自定义类型:联合和枚举
C语言的自定义类型有四个分别是:数组;结构体(struct);联合体(union);枚举(enum)。前面已经讨论过数组和结构体,这期让我们来学习一下联合体和枚举类型。与结构体相似,联合体也是由一个或者多个成员构成,这些成员可以是不同的类型。但是编译器只为最大的成员分配足够的内存空间。联合体的特点是所有成员共用同一块内存空间。所以联合体也叫:共用体。给联合体其中一个成员赋值,其他成员的值也跟着变化。由上述代码运行结果,可知,联合的成员是共用同一块内存空间的(各个成员的起始地址和整个联合体的起始地址都相同
2024-11-22 17:10:04
837
1
原创 拿捏C语言结构体
(1)位段的成员必须是 int、unsigned int、signed int 或者是 char,在 C99 中位段成员的类型也可以选择其他类型;(2)位段的成员名后边有一个冒号和一个数字。
2024-11-22 14:49:59
1201
原创 数据在内存中的存储
0x11223344 这里的11就是高位字节,44就是低位字节。高、低位字节是相对的。按照不同的存储顺序,我们分为大端字节序存储和小端字节序存储大端(存储)模式是指数据的低位字节内容保存在内存的高地址处,而数据的高位字节内容,保存在内存的低地址处。小端(存储)模式是指数据的低位字节内容保存在内存的低地址处,而数据的高位字节内容,保存在内存的高地址处。
2024-11-20 12:25:25
878
原创 速通C语言内存函数
的。所以通常使用memcpy函数拷贝不重叠内存的数据;(对于重叠的内存,交给memmove来处理)函数memcpy只关注要拷贝的数据在哪里,要存放到哪里,拷贝几个字节,至于内存中存放的是什么类型的数据,并不重要。
2024-11-20 11:34:29
1109
原创 C语言函数递归
综上可知,有时候,递归虽好,但是也会引入一些问题,比如栈溢出(stack overflow),所以我们一定不要迷恋递归,适可而止就好。
2024-11-17 14:02:49
1078
原创 深入理解C语言指针(中)
数组名就是数,但是有两个例外:1、:sizeof的括号中单独放一个数组名的时候,数组名表示,计算出的是,单位是。2、:这里的数组名表示,取出的是。
2024-11-10 23:15:43
741
原创 二分查找-函数实现
功能:在一个升序数组中查找指定的数值,找到了就返回下标,找不到就返回-1.//right 数组的右下标。// arr 是查找的数组。//left 数组的左下标。//key 要查找的数字。
2024-11-07 23:47:55
248
原创 C语言操作符详解(个人版)(下)
即使有了操作符的优先级和结合性,我们写出的表达式依然有可能不能通过操作符的属性确定唯一的计算路径,那么这个表达式就是存在潜在风险的,建议不要写出特别复杂的表达式。OK,这就是C语言操作符详解的全部内容,欢迎批评指正,我们下期再见。后面附上笔记。
2024-11-07 22:52:30
717
原创 C语言操作符详解(个人版)(中)
赋值操作符分为简单赋值操作符和复合赋值操作符。简单赋值操作符:=;复合赋值操作符:+=,-=,*=,/=,%=,<<=,>>=,&=,|=,^=分别称为加等,减等,乘等,除等,取模等,左移等,右移等,按位与等,按位或等,按位异或等。(在变量创建的时候给一个初始值叫初始化,在变量创建好后,再给一个值,这叫赋值):将赋值操作符右边的值赋给左边的变量。需要注意的是,如果进行连续赋值,是从右往左依次赋值。:a += b等价于a = a + b。a -= b等价于a = a - b。a *= b。
2024-11-06 22:30:59
1457
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅