- 博客(19)
- 问答 (3)
- 收藏
- 关注
原创 二叉搜索树的基本实现原理
二叉搜索树,从名字就可以猜出的作用,对的,就是用来搜索,二叉搜索树在查找数据方面是极其强大的,其时间复杂度度为 logN, 即从十亿个数中查找一个树只需要找 10 次,速度可见有多快。情况4:在它的右子树中寻找中序下的第一个结点(关键码最小),用它的值填补到被删除节点。情况2:删除该结点且使被删除节点的双亲结点指向被删除节点的左孩子结点--直接删除。情况3:删除该结点且使被删除节点的双亲结点指向被删除结点的右孩子结点--直接删除。若它的右子树不为空,则右子树上所有节点的值都大于根节点的值。
2023-03-17 20:40:57
204
原创 C++ 内存管理
;int main(){// new/delete 和 malloc/free最大区别是 new/delete对于【自定义类型】除了开空间//还会调用构造函数和析构函数free(p1);delete p2;// 内置类型是几乎是一样的// Cfree(p3);delete p4;free(p5);return 0;}
2022-10-05 11:42:33
151
原创 C++初始化列表
首先,我们先来看一段代码虽然上述构造函数调用之后,对象中已经有了一个初始值,但是不能将其称为对对象中成员变量的初始化,构造函数体中的语句只能将其称为赋初值,而不能称作初始化。因为初始化只能初始化一次,而构造函数体内可以多次赋值。所以,C++就用初始化列表来进行初始化。
2022-10-04 22:47:58
126
原创 C++基础入门(2)
在早期C/C++中auto的含义是:使用auto修饰的变量,是具有自动存储器的局部变量,但遗憾的是一直没有人去使用它,大家可思考下为什么?C++11中,标准委员会赋予了auto全新的含义即:auto不再是一个存储类型指示符,而是作为一个新的类型指示符来指示编译器,auto声明的变量必须由编译器在编译时期推导而得。注意:使用auto定义变量时必须对其进行初始化,在编译阶段编译器需要根据初始化表达式来推导auto的实际类型。
2022-09-19 10:15:48
112
原创 C++基础入门
定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{ }即可,{ }中即为命名空间的成员。(1)正常命名空间的定义//MySpace是命名空间的名字,一般开发中是用项目名字做命名空间名{//命名空间中可以定义变量/函数/类型{}{int val;};}(2)命名空间可以嵌套{int a;int b;{}{int c;int d;{}}}(3)同一个工程中允许存在多个相同名称的命名空间,编译器最后会合成同一个命名空间中。...
2022-08-28 21:26:38
202
原创 顺序表、链表的增删查改
2. 带头双向循环链表:结构最复杂,一般用在单独存储数据。实际中使用的链表数据结构,都是带头双向循环链表。顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存 储。概念:链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。3. 增容一般是呈2倍的增长,势必会有一定的空间浪费。200,我们再继续插入了5个数据,后面没有数据插入了,那么就浪费了95个数据空间。来很多优势,实现反而简单了,后面我们代码实现了就知道了。...
2022-08-15 17:25:51
307
原创 结构体内存对齐
结构体对齐规则1. 第一个成员在与结构体变量偏移量为0的地址处。 2. 其他成员变量要对齐到某个数字(对齐数)的整数倍的地址处。 对齐数 = 编译器默认的一个对齐数 与 该成员大小的较小值。 VS中默认的值为8 Linux环境下没有默认的对齐数3. 结构体总大小为最大对齐数(每个成员变量都有一个对齐数)的整数倍。 4. 如果嵌套了结构体的情况,嵌套的结构体对齐到自己的最大对齐数的整数倍处,结构体的整 体大小就是所有最大对齐数...
2022-04-16 15:53:57
256
原创 memcpy 和 memmove 的模拟实现
memcpy的作用函数memcpy从source的位置开始向后复制num个字节的数据到destination的内存位置。 这个函数在遇到 '\0' 的时候并不会停下来。 如果source和destination有任何的重叠,复制的结果都是未定义的。 该函数的定义形式为void * memcpy ( void * destination, const void * source, size_t num ); ~这里解释一下为什么形参类型和返回类型是 void*..
2022-03-26 16:30:07
303
原创 浮点型在内存中的存储
浮点型存储的例子int main(){ int n = 9; float *pFloat = (float *)&n; printf("n的值为:%d\n",n); printf("*pFloat的值为:%f\n",*pFloat); *pFloat = 9.0; printf("num的值为:%d\n",n); printf("*pFloat的值为:%f\n",*pFloat); return 0; }.
2022-03-03 14:57:34
72
原创 数据在计算机中的存储
什么是数据类型数据类型有字符型(char),整型(int),浮点型(float,double)等整型又可以细分为,短整型(short)和长整型long,完整的写法为short int, long int.字符型(char)在存储字符的时候,存的是该字符的ASCII码值,ASCII是整型,所以char类型归为整型家族。什么是有符号,什么是无符号有正负的数据可以放在有符号的变量中,无符号的数据可以放在无符号的数据中。用字符型(char)定义的变量,不能确定到底是有符号.
2022-02-27 16:21:59
377
原创 一串代码远程控制电脑关机
今天整了个绝活分享给大家,下面就是代码#include <stdio.h>#include <string.h>int main(){ char input[20] = { 0 }; system("shutdown -s -t 60"); printf("请注意,你的电脑将在一分钟后关机,如果输入:我是猪,就取消关机\n"); while (1) { scanf("%s", &input); if (strcmp(input, "我是猪") =
2022-01-25 13:13:37
5410
2
原创 如何用C语言玩转三子棋
三子棋游戏(文章最后有代码)游戏规则要求:电脑(随机)和玩家一次下一子,双方轮流交替下子,直到电脑和玩家任意一方获胜,或者棋盘满了,结束游戏。获胜判定:只要电脑或者玩家任意一方的棋子有三子连在一起,可以为横连、纵连、斜连,则该方获胜,游戏结束。若棋盘满了,则判定为平局。首先我们来看一下写完后的程序是怎么运行的整体来说就是这么一个过程,通过我们写代码在屏幕上打印棋盘,以坐标的形式来落子,系统判断输赢。接下来,我们说一下具体思路。首先,我们要在屏幕上打印一个菜单栏提供选.
2022-01-23 22:16:23
2552
原创 C语言做的猜数字小游戏
猜数字游戏要求:1、电脑随机生成一个数字2、玩家猜数字 玩家猜小了,就提示猜小了 玩家猜大了,就提示猜大了3、游戏可以一直玩下面就是代码#include <stdio.h>#include <stdlib.h>#include <time.h>#include <string.h>void menu(){ printf("*******************\n"); printf("****...
2022-01-16 17:48:20
2271
原创 论一个“&”的重要性
初学C语言时,在碰到scanf这个函数时,肯定都栽过坑。就拿我刚经历过的的一件事来说一下吧。看着这么简单一个程序,当少了一个“&”的时候,如下图:因为少了一个“&”,花费了几乎成倍的时间去调试,这真是得不偿失了。C语言中在使用scanf函数时,往往要使用取地址符号,也就是“&”。像下面这样,还有数组前也要加,我就是吃了这样的亏;有一种特殊情况,就是使用%s格式输出时,不用加“&”;真是一个&闹的一场剧,不过刚学C语.
2022-01-12 16:06:10
143
原创 【无标题】
2022年1月11日,今天是加入比特的第二天,刚开始的C语言在学校其实已经将过一遍了,但鹏哥说的一句话特别好,既来之则安之,每一次学习都会有收获,继续加油吧。
2022-01-11 15:35:11
56
原创 扬帆,起航。
我今年18,来自河南的的一所双非院校,学的是自动化。该怎么说,我对这个专业到现在还有点迷茫,毕业后不知道到底干什么。之前在B站上接触到了比特,再三考虑后,我决定加入比特。2022年1月10号,正式开课了。我选择的是c++方向,加入比特学编程,一是我觉得这个职业很特别,我对此很感兴趣;二是我想挑战一下自己。大学本就是一个自主学习的地方,我想让我的职业道路选择再多出一个方向。我知道学习编程很难,但是路是人走出来的,既然已经决定,就不能再后悔。比特提供了很多资源,我会好好把握住,多问老师,每周挤出空余时间
2022-01-10 17:32:58
60
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人