自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 收藏
  • 关注

原创 栈 、队列

stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行元素的插入与提取操作。1.1队列是一种容器适配器,专门用于在FIFO上下文(先进先出)中操作,其中从容器一端插入元素,另一端提取元素。优先队列是一种容器适配器,根据严格的弱排序标准,它的第一个元素总是它所包含的元素中最大的。此上下文类似于堆,在堆中可以随时插入元素,并且只能检索最大堆元素(优先队列中位于顶部的元素)。

2024-04-24 21:26:46 923

原创 list

因为list的底层结构为带头结点的双向循环链表,因此在list中进行插入时是不会导致list的迭代器失效的,只有在删除时才会失效,并且失效的只是指向被删除节点的迭代器,其他迭代器不会受到影响。list中的接口比较多,此处类似,只需要掌握如何正确的使用,然后再去深入研究背后的原理,已达到可扩展的能力。list是c++中stl中自带的容器,list是由双向链表来实现的,每个节点存储1个元素。在list的任何位置执行插入和移除都非常快.插入和删除动作不影响指向其它元素的指针,引用,迭代器,不会造成失效;

2024-04-14 14:10:52 1188

原创 进程的控制

进程=内核的相关管理数据结构(task_struct +mm_struct+页表)+代码数据为了方便父进程对子进程标识,方便管理。释放曾经的代码和数据结构所占据的空间,释放内核数据结构(僵尸)task_sturct 停滞状态return返回退出码(可返回自定义退出码)退出码分为:都交由bash处理,但只存在最新的一个子进程的退出码。父进程bash为什么要知道子进程的退出码(让用户知道)?因为要知道子进程的退出情况,如果用问题就终止。进程终止的3中情况。跑完都可以通过进程的退出码决定。非跑完vs 编程运行时,

2024-04-05 17:23:52 965

原创 vector

ps: 包含头文件:include <vector>(constructor)构造函数声明接口说明vector()(重点)无参构造构造并初始化n个val(重点)拷贝构造使用迭代器进行初始化构造int main()

2024-04-04 21:22:14 535

原创 string接口[小白理解篇]

作文目的本文是为了加深对string底层函数的一点理解(请勿与底层源码混为一谈),下面从模拟与注意项出发。

2024-03-14 22:54:14 382

原创 liunx基础(工具篇)

目前处于[插入模式],就只能一直输入文字,如果发现输错了字,想用光 标键往回移动,将该字删除,可以先按一下「ESC」键转到[正常模式]再删除文字。「#」:「#」号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15,再回车,就会跳到文章的第15行。该模式是我们后面用的最频繁的编辑模式。不过有一点要特别注意,就是你进入vim之后,是处于[正常模式],你要切换到[插入模式]才能够输入文字。在使用末行模式之前,请记住先按「ESC」键确定您已经处于正常模式,再按「:」冒号即可进入末行模式。

2024-03-03 15:32:23 571

原创 string【基础篇】

符串里面最后一个单词的长度int main()// 不要使用cin>>line,因为会它遇到空格就结束了 // while(cin>>line)} return 0;

2024-03-01 19:57:32 857

原创 模 板

class 类模板名// 类内成员定义注意:类模板中函数放在类外进行定义时,需要加模板参数列表//......

2024-02-22 15:55:39 362

原创 c++内存管理

int main()// new/delete 和 malloc/free最大区别是 new/delete对于【自定义类型】除了开空间还会调用构造函数和析构函数free(p1);delete p2;// 内置类型是几乎是一样的(抛异常)// Cfree(p3);delete p4;free(p5);return 0;注意:new开辟的空间在堆上,而声明的变量一般在栈上。

2024-02-22 15:40:27 972

原创 类 (下 )

如下图:

2024-02-21 10:56:07 824

原创 类( 中 )

此时用户再在类外自己实现一个全局的赋值运算符重载,就和编译器在类中生成的默认赋值运算符重载冲突了,故赋值运算符重载只能是类的成员函数。将const修饰的“成员函数”称之为const成员函数(实际修饰的是this指针),修饰的函数不能修改成员变量。销毁顺序:局部对象(后定义先析构)-》局部静态-》全局对象(后定义先析构)运算符重载函数是一种特殊的函数,具有其返回值类型,函数名字以及参数列表。用户没有显示实现,编译器生成的成员函数为默认成员函数。特例: 运算符重载只能重载成成员函数,不能为全局函数。

2024-02-19 16:05:03 665

原创 类 (上)

声明和定义全部放在类体中,需注意:成员函数如果在类中定义,编译器可能会将其当成内联函数处理。cahr* _sex;int _age;2.类声明放在.h文件中,成员函数定义放在.cpp文件中,注意:成员函数名前需要加类名::class Nameahr* _sex;int _age;

2024-02-10 10:13:17 442

原创 初识c++

cin >> >>endl;//endl为换行,可删除或替换‘\n’c++中liunx才有Z,来比对.c语言查找地址是通过(字符表)名字寻找的,不允许出现相同的名字。域名空间就是定义一个新的作用域,同时命名空间可以叠加(套娃)。故名思意,就是缺少参数的函数,一般在声明中说明。赋初值的方法,c++还提供了其他方法。函数重载要求,函数名相同参数不同。int =;cout >>;输入istream类。输出ostream类。

2024-02-02 16:09:02 168

原创 排序 (综合)

这个过程重复,直到整个数组有序。代码目的:与上几个不同的是,该代码将比较值取出存放在一个变量中进行比较,因为这个值被取出所有这个数组上就有一个空位(与就是所谓的坑),那么我们就可以从后向前找小于比较值的数放在坑的位置,再将与坑位交换值得位置变成新的坑位,从前向后找大,依次找到两个值相等,将比较值放入坑位。代码分析:排序最后一个父节点(也就是6的位置),然后让这个父节点的子节点进行比较找出最值与父节点比较,如果最值比父节点小(大)就要换两个值,再将现在的子节点变为父节点,排序他的子节点,以此类推直至有序。

2024-01-23 18:58:10 914

原创 二 叉 树

0·节点的度:一个节点含有的子树的个数称为该节点的度;如上图:A的为6 .1·叶节点或终端节点:度为0的节点称为叶节点;如上图:B、C、H、I…等节点为叶节点2非终端节点或分支节点:度不为0的节点;如上图:D、E、F、G…等节点为分支节点3.双亲节点或父节点:若一个节点含有子节点,则这个节点称为其子节点的父节点;如上图:A是B的父节点4.孩子节点或子节点:一个节点含有的子树的根节点称为该节点的子节点;如上图:B是A的孩子节点5.兄弟节点:具有相同父节点的节点互称为兄弟节点;

2023-12-31 22:43:53 939

原创 Liunx基础指令

cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。“@”表示符号链接;head 与 tail 就像它的名字一样的浅显易懂,它是用来显示开头或结尾某个数量的文字区块,head 用来显示档案的开头至标准输出中,而 tail 想当然尔就是看档案的结尾。mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files),是Linux系统下常用的命令,经常用来备份文件或者目录。

2023-11-28 16:37:08 65 4

原创 队列与队列运用

/队中数值INT val;//下位指针}ST1;{ //队头ST1*p1;//队尾ST1*p2;//队数值int size;}ST2;//初始化队列//销毁队列//队尾插入队列//队头出队列//获取队头元素//获取队尾元素//判断队列是否为空//队列中有效位数//存放数据的数值(队列)int *a;//队头int front;//队尾int rear;//队列大小int n;

2023-11-26 20:29:35 43 3

原创 顺序表

静态顺序表的定长数组导致N定大了,空间开多了浪费,开少了不够用。所以现实中基本都是使用动态顺序表,根据需要动态的分配空间大小,所以下面我们实现动态顺序表。(linear list)是n个具有相同特性的数据元素的有限序列。顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以。(总结就是一个连着的存储结构(数组))。线性表在逻辑上是线性结构,也就说是。(与前插没有过多本质区别)(与前删没有过多本质区别)

2023-11-21 09:46:42 36 4

原创 栈的基础定义

在我们学习初级的数据结构时,最先接触顺序表和链表,然后就是我们的栈和队列,我们刚开始可能更熟悉顺序表和链表,面对刚接触的栈和队列有很多疑问,那么现在就跟我一起梳理一遍知识吧。

2023-11-17 21:19:03 18

原创 文件的使用

磁盘上的⽂件是⽂件。程序⽂件、数据⽂件(从⽂件功能的⻆度来分类 的)。根据⽂件指针的位置和偏移量来定位⽂件指针。//stream文件指针//offset移动位置//位置 如:SEEK_SET//SEEK_SET 开头//SEEK_END 现在位//SEEK_CUR 末尾下列实例:int main()return 0;

2023-09-26 22:40:59 41

原创 编译和链接

程序同时也可以使⽤静态(static)内存,存储于静态内存中的变量在程序的整个执⾏过程 ⼀直保留他们的值。将源代码程序被输⼊扫描器,扫描器的任务就是简单的进⾏词法分析,把代码中的字符分割成⼀系列 的记号(关键字、标识符、字⾯量、特殊字符等).编译过程就是将预处理后的⽂件进⾏⼀系列的:词法分析、语法分析、语义分析及优化,⽣成相应的 汇编代码文件。·在在Windows环境下的⽬标⽂件的后缀是.obj,在LIUNX环境下的⽬标⽂件的后缀是.o。链接解决的是⼀个项⽬中多⽂件、多模块之间互相调⽤的问题。

2023-09-26 13:18:02 25

原创 联合体与枚举

联合的成员是共⽤同⼀块内存空间的,这样⼀个联合变量的⼤⼩,⾄少是最⼤成员的⼤⼩(因为联合 ⾄少得有能⼒保存最⼤的那个成员)。那么你发现没有,你再使用的时候会有多少空间的浪费。像结构体⼀样,联合体也是由⼀个或者多个成员构成,这些成员可以不同的类型。⽐如,我们要搞⼀个活动,要上线⼀个礼品兑换单,礼品兑换单中有三种商品:图书、杯⼦、衬衫。5. 枚举常量是遵循作⽤域规则的,枚举声明在函数内,只能在函数内使⽤。⼀周的星期⼀到星期⽇是有限的7天,可以⼀⼀列举。

2023-09-18 21:41:25 37

原创 结构体的使用

结构是⼀些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量int x;int y;}p1;return 0;int x;int y;//定义结构体变量p2//初始化:定义变量的同时赋初值。return 0;

2023-09-18 20:47:18 145

原创 数据在内存中的存储

这是因为在计算机系统中,我们是以字节为单位的,每个地址单元都 对应着⼀个字节,⼀个字节为8 bit 位,但是在C语⾔中除了8 bit 的 char 之外,其他的都大于8位字节。对于32位的浮点数,最⾼的1位存储符号位S,接着的8位存储指数E,剩下的23位存储有效数字M 对于64位的浮点数,最⾼的1位存储符号位S,接着的11位存储指数E,剩下的52位存储有效数字M。这时是正常的,浮点数就采⽤下⾯的规则表⽰,即指数E的计算值减去127(或1023),得到真实值,再将有效 数字M前加上第⼀位的1。

2023-09-14 20:48:21 43 1

原创 字符串函数的运用与模拟 下

在不同的系统和C语⾔标准库的实现中都规定了⼀些错误码,⼀般是放在 errno.h 这个头⽂件中说明 的,C语⾔程序启动的时候就会使⽤⼀个全⾯的变量errno来记录程序的当前错误码,只不过程序启动 的时候errno是0,表⽰没有错误,当我们在使⽤标准库中的函数的时候发⽣了某种错误,就会讲对应 的错误码,存放在errno中,⽽⼀个错误码的数字是整数很难理解是什么意思,所以每⼀个错误码都是 有对应的错误信息的。• strtok函数找到str中的下⼀个标记,并将其⽤ \0 结尾,返回⼀个指向这个标记的指针。

2023-09-12 17:44:53 30

原创 字符串函数的运用与模拟 上

• 源字符串必须以 '\0' 结束。• ⽬标字符串中也得有 \0 ,否则没办法知道追加从哪⾥开始。• ⽬标空间必须有⾜够的⼤,能容纳下源字符串的内容。• ⽬标空间必须可修改。6.2函数模拟= NULL);assert(src!= NULL);dest++;;return ret;

2023-09-11 15:33:04 28

原创 指针全解1

下述代码,其实n本质是变量,只不过被const修饰后,在语法上加了限制int main()int m = 0;m = 20;//m是可以修改的n = 20;//n是不能被修改的,常量不能修改return 0;但是如果我们绕过n,使⽤n的地址,去修改n就能做到了,虽然这样做是在打破语法规则。*p = 20;return 0;输出结果:020。

2023-08-18 14:36:42 30 1

原创 每日一练 c

猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。编写程序求猴子第一天摘了多少个桃子。(3) 使用 if 语句进行条件判断,如果 a 大于 b,则借助于中间变量 t 互换 a 与 b 值, 依此类推比较 a 与 c、b 与 c,最终结果即为 a、b、c 的升序排列。本题的思路基本上是先找出变量之间的关系,也就是明确第一天和第二天桃数之间的关系,即第二天的桃数+1*2等于第一天的桃树。(1)定义数据类型,本实例中 a、b、c、t 均为基本整型。(4) 使用输出函数将 a、b、c 的值依次输出。

2023-08-13 21:23:48 33 1

原创 数 组

类型(int)数组名(arr)[数组大小]如;int arr[10]={0}//不完整初始化//初始化char arr[10]="asdfgh"//字符使用双引号int main()i < size;地址值:图片来源于:http://t.csdn.cn/zxQxI一位数组大同小异地址代码int main()int i = 0;for (i = 0;i < 3;for (j = 0;

2023-08-08 10:03:30 29

原创 汉诺塔问题

代码中定义的 ssd() 函数是一个递归函数,它有四个参"n"“a”“b”“c”。“n” 是移动的圆盘个数,“a”“b”“c” 分别表示三根针,其功能是把 a 上的 n 个圆盘移动到 c 上。当 n=1 时,直接把 a 上的圆盘移到 c上,输出"A—C"。当 n!=1 时,则递归调用 ssd() 函数,把 (n-1) 个圆盘从 a 移到 b,输出"A—-C";再递归调用 hanoi() 函数,把 (n-1) 个圆盘从 b 移到 c。

2023-08-04 15:17:57 56 1

原创 兔生兔问题

兔子繁殖问题:假定一对大兔子每月能生一对小兔子,且每对新生的小兔子经过一个月可以长成一对大兔子,具备繁殖能力,如果不发生死亡,且每次均生下一雌一雄,问一年后共有多少对兔子?

2023-08-03 20:31:51 141 2

原创 扫雷代码讲解

基础扫雷

2023-07-30 21:24:38 51 1

原创 水仙花多位算法

while(~scanf("%d",&c)) //等同于scanf()!//b=10的iz次方。for(c=b/10;c++) //确立范围。//模拟(x0)n +(x1)n +(x2)n 公式。所谓"水仙花数"是指一个3位数,其各位数字立方和等于该数本身。例如:153是水仙花数,因为153=1^3+5^3+3^3"。//每次循环赋值给a,c%10的iz次方值。//返还c的值,进行比较。//除去以计算值,调至下位。printf("位数\n");

2023-07-25 18:57:05 75

原创 排序(算法)

C语言中有着多种排序方法,其中希尔排序便是之一。希尔排序是什么?怎么写?希尔排序又称”缩小增量排序”,是插入排序的改进版本。它会将待排序的记录按下标的一定增量分组,随着增量逐渐减少,每组包含关键词越来越多当增量减至1时,整个文件被分成一组,算法便终止。希尔排序的效率要高于插入排序算法,但是它是一种不稳定的排序算法。运行结果:请输入10个数值:插入数据排序后顺序:过程如下:趟数 监视哨 排序结果。

2023-07-25 15:33:18 83

原创 逻辑运算符,分支语句与循环

C语⾔是结构化的程序设计语⾔,这⾥的结构指的是顺序结构、选择结构、循环结构,C语⾔是能够实 现这三种结构的,其实我们如果仔细分析,我们⽇常所⻅的事情都可以拆分为这三种结构或者这三种 结构的组合。我们可以使⽤ if 、 switch 实现分⽀结构,使⽤ for 、 while 、 do while 实现循环结构。

2023-07-24 19:48:38 56

原创 变量与常量

一,宏定义#define预算处理器。二,const关键字(定义常量)

2023-07-21 21:13:50 143 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除