自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++之内存管理

对于自定义类型,new和delete除了开空间,还会调用构造函数和析构函数。注意:在申请自定义空间时,new会调用构造函数,delete会调用析构函数。而malloc和free不会。

2024-09-24 20:26:40 941 1

原创 排序的实现

思路:key为第一个位置下标,用cur遍历整个数组,开始时,prev指向第一个位置,cur指向prev+1位置,cur找小,找到比key位置小的 ,与prev下一个位置交换,cur找到大的++,直到遍历完整个数据。这种情况是在数据较小的情况下,如果数据较大,比如101,100,105,102,103,102这组数据,就需要开辟空间为105的数组,消耗太大了。思路:一组数据中,遍历一遍,选出最小的数和最大的数,分别放到第一个位置和最后一个位置,然后除这两个元素外,再将剩下的元素进行遍历选数,依次循环。

2024-09-19 12:00:05 1007

原创 堆的时间复杂度分析

总结点个数N=2^0+2^1+...+2^(h-1)=2^h-1。那么就可以得出高度和节点个数的关系h=log(N+1)。最少情况下,N=2^0+2^1+...+2^(h-2)+1=2^(h-1),同样高度和节点个数的关系:h=logN+1;相减得:F(h)=2^(h-1)+2^1+2^2+...+2^(h-2)-2^0*(h-1)最多需要调整的次数:T(h)=2^1*1+2^2*2+...+2^(h-1)*(h-1)相减得:T(h)=2^h*(h-1)-2^1-(2^2+2^3+...+2^(h-1))

2024-08-31 19:18:51 733

原创 二叉树——堆(c语言实现)

再删除最后一个数据,最后再进行一次调整建堆。

2024-08-30 00:32:57 326

原创 类和对象下

而有默认构造的,可以不用在初始化列表写,编译器会自动调用的默认构造进行初始化。6,总的来说,成员变量初始化尽量使用初始化列表。2,内部类是一个独立的类,它不属于外部类,不能通过外部类的对象去访问内部类的成员。2,每个成员变量在初始化列表只能出现一次,语法上可以理解初始化列表是成员变量初始化定义的地方。4,静态成员函数可以访问静态成员变量,但不能访问非静态的,因为没有this指针。5,非静态的成员函数,可以访问任意的静态成员变量和静态成员函数。,这三类是必须在初始化列表进行初始化的,不能在函数体内初始化。

2024-07-29 21:12:26 788

原创 Date日期类的实现

首先定义Date类,包含三个成员变量,以及几个默认成员函数。class Datepublic:Date(int year=1,int month=1,int day=1)//实现的默认构造函数,全缺省_day = day;Date(const Date& d)//拷贝构造Date& operator=(Date& d)//赋值运算符重载cout

2024-07-28 15:43:54 629

原创 c++类和对象中

如果一个类中什么成员都没有,简称空类。默认成员函数:用户自己没有显示实现,编译器会自动生成的成员函数叫做默认成员函数。 重点是构造,析构,拷贝构造和赋值重载这四个函数。构造函数是特殊的成员函数,名字虽然叫做构造,但他不是用来开空间的,而是来完成初始化工作的。当实例化对象完成后,就会调用构造函数来对成员变量进行初始化。构造函数的特点:(1)函数名与类名相同。(2)无返回值(返回值什么都不写,void也不写)(3)对象实例化时系统会自动调用构造函数(4)构造函数可以重载 (5)如果类中没有显示定义构造函数

2024-07-26 18:32:24 981

原创 C++基础+类和对象上

/由成员函数和成员变量组成(1)class为定义类的关键字,classname为类名, {}中为类的主体。类中的变量称为类的属性或类的成员变量,类中的函数称为类的方法或成员函数。(2)为了区分成员变量,一般在成员变量前加上_,比如_i。(3)定义在类中的成员函数默认是内联函数。但是是否展开还是取决于编译器。(4)c++中struct也可以定义类,c++兼容c语言的用法,同时struct升级成了类,与class定义类相比,struct中的成员属性默认是public,而class默认是。

2024-07-25 17:16:28 723

原创 C++基础

注:这里域后面不用加“;”,与结构体和类的定义不同。6,访问域的成员,需要用到。

2024-07-16 19:51:44 658

原创 链表经典问题

例如:一共有5个人,报到2的人离开,1开始报数,1->1,2->2,2离开;接着继续从下一个人开始重新报数,也就是从3开始,3->1,4->2,4离开......依次类推,直到剩下最后一个人。

2024-05-16 17:38:01 361

原创 顺序表的实现

的概念:线性表是指具有相同元素数据类型的有限序列。线性表包括 顺序表,链表,栈,队列,字符串等等。(1)线性表在逻辑结构上是线性的,也就是一条直线。(也就是我们人为想像它是线性的)。它在逻辑结构上是l线性的,在物理结构上也是线性的。(2)线性表在物理结构上不一定连续。通常以数组和链式结构存储。可以理解为,顺序表是对线性表的封装,实现了增删查改等接口。又是敲代码的一下午!10,在指定位置之前插入数据。2,顺序表的概念:顺序表是。9,删除指定位置数据。

2024-05-13 17:35:32 187 1

原创 栈(c语言实现)

1,栈:一种特殊的线性表,其只允许在一端进行数据的插入和删除,这一端称为栈顶,还有一端就称为栈底。栈中的数据元素遵循后进先出的原则。压栈:栈的插入操作,也叫做进栈,入栈,所插入的数据在栈顶。出栈:栈的删除操作,所删除的数据在栈顶。2,栈的结构。

2024-05-09 15:23:14 310

原创 数据结构----单链表

头文件SListNode.h,用来声明各种函数和包含所需的头文件。源文件SListNode.c,用来实现所声明的函数。源文件test.c,作为测试文件,测试所写的方法。

2024-04-15 13:43:48 376 3

原创 自定义类型——结构体类型

这是一个匿名结构体类型,没有名字,直接创建一个结构体变量s,如果这样创建,就不能再创建其他的结构体变量。结构体的自引用可以理解为上图的方式,先存放一个整形变量,再存一个结构体指针,该指针指向下一个结构体。4,如果存在了结构体嵌套,嵌套的结构体成员存到自己成员最大对齐数的整数倍处,最后结构体的大小是。3,结构体的总大小为最大对齐数(每个成员都有一个对齐数,所有对齐数中最大的)的整数倍。最大对齐数(每个成员都有一个对齐数,所有对齐数中最大的)的整数倍。//d只占30个比特位。//b只占5个比特位。

2024-03-31 19:17:36 265 1

原创 浮点数在内存中的存储

我们知道,对于整数,它在内存中是以二进制补码的形式存储的。如果通过整数的存储形式,上述代码运行结果是9 9.000000 9 9.000000结果并非如此,我们可以知道,浮点数和整数的存储形式是不同的。

2024-03-17 11:44:17 838 2

原创 内存操作函数

由图可以看出,当dest>scr时,数据需要从前往后拷贝,才能达到效果,若是从后往前拷贝,会使数据被覆盖而达不到想要的效果。memset是内存设置函数,将内存中的值以字节为单位设置成想要的内容,这里的num是以字节为单位的。和memcpy相比,memmove函数处理的两个数据可以是重叠的。将3,4,5,6,7这5个元素拷贝到1,2,3,4,5。比较从ptr1和ptr2开始,向后的num个字节的大小。这里,从前往后拷贝时,是和memcpy函数一样的。

2024-03-14 21:42:03 358 2

原创 指针3--C语言

传参时传的是arr数组名,数组名表示首元素地址,二维数组的首元素地址是第一行元素的地址,可以看作是一个一维数组的地址,因此,在形参部分,使用一个数组指针接收。这组代码,可以理解为将字符数组"hello word"的首元素地址放在字符指针变量str中,这是一个常量字符串,不能被修改,所以在前面加上了const修饰。这里通过一个函数指针数组,进行对四个函数的调用,这四个函数是返回类型相同,函数参数也相同,所以可以放在一个函数指针数组里。函数指针变量,存放函数地址的指针变量。2,函数指针变量的使用。

2024-03-12 15:44:08 331 1

原创 指针2——C语言

数组指针的定义,首先它是一个指针,就得先于“*”结合,证明他是一个指针,再与[10]结合,这证明他所指向的对象是数组。从上述代码中,可以看出交换前后变量a,b的值并未发生交换,我们在将变量a,b的值传给swap函数后,x,y接受到a和b,在swap函数内部,x,y成功交换,而a,b未交换。对指针变量p2来说,它先于*结合,证明他是一个指针,再与int*结合,证明它所指向的对象是整形指针类型,是一个二级指针。因此,x,y只是a和b的一份临时拷贝,通过改变x,y,对a和b的值没有影响。

2024-03-03 20:48:26 824 1

原创 指针1---C语言

比如,p1是整形指针,在加1后,跳过4个字节,也就是一个整形变量的大小;然而在上述代码中,a的地址被存在一个字符指针变量中,是可以存下的,然而在解引用p访问a时, 因为p是字符指针类型(char*),所以只能访问一个字节,这时就无法实现对a的更改。这里p是整形指针变量,存放整型变a的地址,再解引用操作后,访问4个字节的大小,刚好是整形变量a的大小,再赋值20,就把a的值改为20;左边,const修饰*p,*p所指向的对象不能更改,但p可以更改,也就是说p可以存放其他变量的值,不能改变它所指对象的值。

2024-03-01 22:08:56 790 1

原创 C语言实现简单扫雷游戏

这时,用数字来表示“雷”的个数的意义就体现出来,当求某个格子周围“雷”的个数时,直接将周围数字加起来就可以了。4,棋盘的设计,考虑到要将格子周围数加起来,为了防止再加的时候出现越界,所以对数组扩大一圈,扫雷的区域:行ROW,列COL,而设计的是:行ROWS,列COLS。扫雷游戏如下:规则大致是,打开一个格子,每个格子的数字代表已该格子为中心,四周存在雷的个数,如果所打开的格子是“雷”,则输。2,接下来就是对棋盘的设计,我们用‘1’来表示“雷”,‘0’表示不是雷。2,该部分完成后,开始设计游戏内容。

2024-01-30 21:43:21 356

原创 【C语言】分支语句与循环语句

C语言程序设计结构包括:1.顺序结构2.选择结构3.循环结构C语言语句大致可以分为3类:1.分支语句:也叫选择语句,if语句,switch语句2.循环语句:for循环,while循环,do...while循环3.转向语句:break语句,continue语句,goto语句二、分支语句(选择语句)2.1if语句的语法形式如下:if(表达式)语句 //如果循环体想要包含多条语句,可以加上大括号if(表达式1)语句1else语句2if(表达式1)语句1。

2024-01-23 22:37:49 300

原创 我的第一篇博客

在C语言的学习过程中,我发现了自己对编程的兴趣,所以我的目标是学好C语言,不断提高自己。同时在学完C后,我还要学数据结构,还有其他的语言。我知道学好这一门技术不是一蹴而就的,只有每一次的坚持才能学好,所以我每天会坚持学习1~2小时,独自练习敲代码,坚持每周写一次博客。我在大一上学期已经学过C语言,但是学得不扎实,就想继续学习,学好基础,达到精通,我也会一直坚持下去的。我希望自己可以坚持下去,实现自己的目标,同时也祝各位可以实现自己的目标。我的目标是进入像华为,腾讯,网易这样的大厂,我会为了我的目标而奋斗。

2024-01-17 11:35:09 374

空空如也

空空如也

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

TA关注的人

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