自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++:string

STL(standard template library标准模版库),是c++标准库的重要组成部分,是一个包罗数据结构与算法的软件框架。STL有很多版本,我们学习STL要阅读部分源代码,主要参考SGI版本。STL的六大组件网上有句话说:“不懂STL,不要说你会C++”。STL是C++中的优秀作品,有了它的陪伴,许多底层 的数据结构以及算法都不需要自己重新造轮子,站在前人的肩膀上,健步如飞的快速开发。

2024-08-09 16:31:08 1693

原创 数据排序之旅

假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳定的;这个版本的快排就是令两个数据分别指向数组的两端,在令key为数组其中一个元素的值,使key的左边都小于对应key位置的值,key右边的值都大于key位置的值,key对应的值就已经排好了,然后数组就被分为两个小数组,这跟二叉树有点相似,直接使用递归。非递归,要用栈来帮忙实现。

2024-08-05 18:32:13 1091

原创 数据结构:二叉树

上图前序顺序为:1->2->3->N->N->N->4->5->N->N->6->N->N(N为NULL),从根开始,有左子树就走,然后左子树的第一个为根,等没有左子树就看看右子树有没有,没有就看之前的有没有右子树。的数据结构,是由n个有限节点组成的具有层次关系的集合,它倒起来像一棵树,所以称为树,树的根朝上,叶朝下。顺序为N->3->N->2->N->1->N->5->N->4->N->6->N.顺序为N->N->3->N->2->N->N->5->N->N->6->4->1.定义的(简称“套娃”)。

2024-07-29 23:50:40 926

原创 数据结构:栈和队列

队列也可以数组和链表的结构实现,使用链表的结构实现更优一些,因为如果使用数组的结构,出队列在数 组头上出数据,效率会比较低。栈的实现一般使用数组或者链表,相对而言数组的结构实现更优一些,数组尾插时代价较小。栈:是一种特殊的线性表,只允许在固定的一端进行插入或者删除。队列:只允许在一端插入数据,在另一端删除数据,队列具有。压栈:栈的插入操作叫做进栈/压栈/入栈,出栈:栈的删除操作叫做出栈,

2024-07-27 16:37:27 281

原创 数据结构:单链表

之前说双链表就是带头双向循环链表,带头与头结点不一样,这里的头结点为“哨兵位”,哨兵位节点不存储任何有效元素,只是用来放哨的,存在的意义就是防止遍历循环链表时出现死循环。链表是物理存储结构上非连续,非顺序的存储结构,逻辑顺序是通过链表指针实现的。双向就是节点可以指向下一个的节点以及上一个的节点(首尾节点除外)节点是从堆上申请空间的,从堆上申请的空间可能连续,可能不连续。链表的结构像火车一样,一节一节的,每节车厢都是独立存在的。链式结构在逻辑上是连续的,在物理上是不一定连续的。

2024-07-21 16:02:48 311

原创 数据结构:顺序表

数据结构是计算机存储、组织数据的方式。使用数据结构会大大提高程序运行的效率。

2024-07-19 17:28:03 460 1

原创 类与对象(晦月)

第七点的知识理解就行,不同编译器的优化结果不同。

2024-07-17 09:46:52 567

原创 类和对象(满月)

在上述代码中,不写~stack会导致内存泄漏。

2024-07-14 15:32:12 577

原创 类和对象(朔月)

class为定义类的关键词,Stack为类的名字,{}为类的主体,定义完后;不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者成员函数。一般习惯上成员变量会加一个特殊标识。c++中struct也可以定义类,c++兼容c中的struct的用法,明显的变化就是struct可以定义函数,一般情况下我们还是推荐用class。定义在类面的成员函数默认为inline。

2024-07-11 19:39:26 806

原创 C++基础

定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{}中即为命名空间的成员。命名空间中可以定义变量/函数/类型等。namespace本质是定义出一个域,这个域跟全局域各自独立,不同的域可以定义同名变量,所以上面的rand不在冲突了。C++中域有函数局部域,全局域,命名空间域,类域;域影响的是编译时语法查找一个变量/函数/ 类型出处(声明或定义)的逻辑,所有有了域隔离,名字冲突就解决了。

2024-07-09 16:20:44 756

原创 C语言-文件操作

硬盘(磁盘)上的文件是文件。在程序设计中,文件有两种:程序文件和数据文件。1、程序文件。

2024-06-01 17:46:09 565

原创 动态内存管理

之前学的开辟内存的方式有创建数组、定义一个变量等,但这些内存大小的开辟是固定的,大小一旦确定就不能更改了。有时候我们需要的空间大小在程序运行的时候才能知道。为了使内存的开辟变得灵活,C语言引入了动态内存开辟,让程序员自行申请和释放空间。这个函数是向内存申请一块连续可用的空间,并返回指向这块空间的指针。这个函数的功能为将num个大小为size的元素开辟一块空间,1、扩展内存是在原有的空间里扩展,原来空间的数据不发生变化。2、在堆空间上另外开辟空间,返回的是新的内存地址。free函数是来释放动态开辟的内存。

2024-05-19 23:18:38 337 1

原创 自定义类型:结构体

位段的声明和结构是类似的,有两个不同:1、位段的成员必须是int,unsigned int,signed int,在c99中位段成员的类型也可以选择其他类型。2、位段的成员名后边有一个冒号和一个数字。int b:5;int c:10;int d:30;那位段A所占内存的大小是多少?答案是 8。

2024-04-12 00:18:46 1368

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

至于指数E(unsigned int),如果E为8位,取值范围为0-255,如果E为11位,取值范围位0-2047,但是在科学计数法,E可以为负数,所以存入内存时E的值要加上一个中间数,对于八位的E来说,中间值为127,对于11位,中间值位1023。在计算机系统中,数据一律使用补码来表示和存储,采用补码可以使减法运算转换为加法运算,两个数的补码相加,如果最高位有进位(符号位)则忽略不计,其结果就是这两个数相减的补码。那么根据上述公式,S=0,M=1.10,E=2;最高位的一位为符号位,其余全为数值位。

2024-03-31 15:48:32 1699 1

原创 c语言内存函数

其函数的形式为:void * memmove ( void * destination, const void * source, size_t num )。函数形式:void * memcpy ( void * destination, const void * source, size_t num )其函数形式为:int memcmp ( const void * ptr1, const void * ptr2, size_t num );比较ptr1和ptr2指针所指的位置开始,向后num个字节。

2024-03-25 23:12:44 157

原创 字符函数与字符串函数

strtok函数的第一个参数不为NULL,函数找到str第一个标记,strtok函数将保存它在字符串中的地址,strtok函数第一个参数为NULL,函数将同一个字符串中被保存的位置开始,继续找下一个标记,如果字符串没有标记就返回NULL。对于strncat来说,将source指向的字符串的前num的字符追加到destination指向的字符串末尾,再追加一个\0,如果source指向的字符串的长度小于num的时候,只会将字符串中到\0的内容追加到。destination指向的字符串末尾。

2024-03-19 20:40:17 565 1

原创 会指针只是你的谎言(终)

回调函数就是通过函数指针调用的函数。就是把函数的指针传给另一个函数,当这个指针被用来调用其所指的函数时,被调用的函数就是回调函数。上一个篇章写的函数指针数组就是一个例子。qsort是<stdlib.h> 文件下的库函数,可以对所有类型的数据进行排序。采用冒泡排序的方法实现qsort函数。

2024-03-15 23:01:42 345 1

原创 会指针只是你的谎言(三)

意味着二维数组传参本质上是传递了地址,传递的是第一行一维数组的地址。结果是一样的, 所以函数是有地址的,函数名就是函数的地址,当然也可以用&函数名的方式取出函数的地址。如果我们要存函数的地址就要创建函数指针变量,函数指针变量的写法与数组指针的形式类似。这里的str3与str4指向的是同一个内容, 但都存放首元素的地址,指向同一个地方,而str1与str2分别开辟出不同的内存块。之前我们学了指针数组,指针数组是一种数组,数组存放的是指针。这是用函数来写的,下面是用函数指针数组来写的。所以数组指针是一种指针。

2024-03-11 23:12:36 397

原创 会指针只是你的谎言(二)

通过计算我们发现&arr[0]与&arr[0]+1 相差4个字节,arr与arr+1相差4个字节,&arr[0]+1就是跳过一个元素。我们类比一下,整型数组,里面存整型、字符数组里面存字符,所以指针数组是数组,里面存放指针。将*(p+1)换成p[i]也是可以的,所以本质上*(p+1)等价于p[i]。,这里的数组名表示整个数组,计算的是整个数组的大小,单位是字节。对于一维数组来说,形参可以写成数组的形式,也可以写成指针的形式。所以数组传参实际是传的是首元素的地址。,取出的是整个数组的地址。

2024-03-08 22:54:58 380 1

原创 会指针只是你的谎言(一)

对指针的一些总结。

2024-03-05 23:19:27 316

原创 简单的扫雷游戏

用C语言的知识写一个简单的扫雷游戏。

2024-02-05 18:08:24 349 1

原创 选择与循环

总结一下学完C语言中分支与循环的内容。

2024-01-26 19:15:34 1565 1

原创 命运的齿轮开始转动

大家好,我是二十五夜。在2023年,我选择了计算机专业,正式踏入了编程领域,面对曾经从未接触的领域,我就像游戏里的人机,什么都不会,一开始只能去模仿来熟悉编程。我的目标吗,就是熟练掌握一门编程语言,从入门到进阶。为了这个目标我会如C语言书上所说“每天编程一小时”,多刷题,多领悟编程思维。我想进的IT公司的是腾讯,阿里,小米,还有哔哩哔哩,虽然目标远大,但我会脚踏实地走好每一步脚印,虽不能至,心向远方。我知道模仿难成大器,现在的我还是太弱小了,何况任何强者不都经历了自己弱小的阶段,我相信将来我也会慢慢变强。

2024-01-16 21:44:58 383

空空如也

空空如也

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

TA关注的人

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