- 博客(44)
- 收藏
- 关注
原创 C++模板初阶
模板是泛型编程的基础,泛型编程即以一种独立于任何特定类型的方式编写代码。模板是创建泛型类或函数的蓝图或公式。库容器,比如迭代器和算法,都是泛型编程的例子,它们都使用了模板的概念。每个容器都有一个单一的定义,比如向量,我们可以定义许多不同类型的向量,比如或。您可以使用模板来定义函数和类,接下来让我们一起来看看如何使用。
2024-09-22 16:10:18
958
2
原创 C++类和对象(中)
对于以下Date类: 2.2 特性 构造函数是特殊的成员函数,需要注意的是,构造函数虽然名称叫构造,但是构造函数的主要任 务并不是开空间创建对象,而是初始化对象。 5. 如果类中没有显式定义构造函数,则C++编译器会自动生成一个无参的默认构造函数,一旦 用户显式定义编译器将不再生成。 例如: 三.析构函数3.1 概念 3.2 特性 关于编译器自动生成的析构函数,是否会完成一些事情呢?下面的程序我们会看到,编译器
2024-08-30 14:45:09
1253
原创 C++类和对象(上)
classclassName//类体:由成员函数和成员变量组成//一定要注意后面的分号class为定义类的关键字,ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分号不能省略。类体中内容称为类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者成员函数。类的两种定义方式:1. 声明和定义全部放在类体中,需注意:成员函数如果在类中定义,编译器可能会将其当成内联函数处理。
2024-08-29 22:03:13
890
1
原创 C++入门(超详细版)
C++是在C的基础之上,容纳进去了面向对象编程思想,并增加了许多有用的库,以及编程范式等。熟悉C语言之后,对C++学习有一定的帮助,本章节主要目标:1. 补充C语言语法的不足,以及C++是如何对C语言设计不合理的地方进行优化的,比如:作用域方面、IO方面、函数方面、指针方面、宏方面等。2. 为后续类和对象学习打基础。定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{}中即为命名空间的成员。// 1.命名空间中可以定义变量/函数/类型。
2024-08-29 14:44:20
1725
原创 【排序算法】选择排序和堆排序(含图解)
上一篇博客介绍了两种插入排序,这里我们继续介绍两种选择排序——直接选择排序和堆排序希望能给你带来收获。二、
2024-05-19 20:42:24
794
原创 【排序算法】插入排序和希尔排序
从这篇博客开始,我们将介绍几种常见的排序算法!插入排序算法是希尔排序的基础,所以理解希尔排序前一定要先理解插入排序!!!希尔排序是直接插入排序的升级,我们理解了直接插入排序,希尔排序应该会很轻松。总结。
2024-05-17 23:22:34
977
原创 二叉树OJ刷题
前三篇博客我们详细介绍了树形结构,及两种特殊的树:堆和二叉树。这篇博客我们将运用这些结构来解决问题。经过这几道题目的练习,相信我们对二叉树结构的理解和分治思想的领会更上一层楼!!!
2024-05-13 19:06:57
537
1
原创 数据结构(四)——二叉树和堆(下)
这篇博客我们将来了解普通二叉树的实现和应用,对大家之前分治和递归的理解有所挑战。我们详细了解了二叉树的存储结构,并初步领会了分治思想。
2024-05-12 22:15:45
1292
1
原创 数据结构(四)————二叉树和堆(中)
优快云这篇博客介绍了二叉树中的基本概念和存储结构,接下来我们将运用这些结构来实现二叉树这篇博客详细介绍了堆结构的实现和实践中的应用,希望对大家有所收获。
2024-05-10 19:23:54
1085
原创 栈和队列OJ刷题
上两篇博客介绍了栈和队列的结构与实现,这篇博客我们将用栈和队列的结构与思想来解决一些oj题目通过上面几道经典题目的练习,相信我们对栈和队列的结构更加熟悉!!!
2024-05-04 23:40:21
303
原创 数据结构(四)——队列
上一篇博客我们介绍了栈的结构,这篇博客我们将介绍一个与栈类似的数据结构——队列队列的难度不是很大,与单链表有许多相似之处,细节可以去看看链表部分的博客!!!}QNode;int size;}Queue;assert(pq);assert(pq);free(cur);cur = next;assert(pq);return;assert(pq);//一个节点//多个节点else。
2024-05-04 15:57:26
531
原创 数据结构(三)------栈
前面我们介绍了第二种数据结构---链表,这里我们继续介绍下一种数据结构——栈!!!栈:栈是一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作,进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出(Last In First Out)原则。压栈:栈的插入操作叫做进栈 / 压栈 / /入栈。出栈:栈的删除操作叫做出栈。栈的实现相较于链表还是很简单的,如果有些地方不太理解,可以去看看链表部分。int top;}ST;assert(ps);
2024-05-02 23:57:32
642
1
原创 链表OJ刷题(二)
链表的回文结构链表的回文结构_牛客题霸_牛客网这里我们需要先了解一下什么叫做回文:从前向后看与从后向前看的结果是一样的,我们就称为回文结构!!!思路: 这道题目是我们之前链表OJ(一)中两道经典题目的结合------查找中间节点与链表的逆置。我们可以先找到链表的中间节点(如果链表节点个数为偶数,有两个中间节点,我们选取靠后的那一个),然后将链表的中间节点以后的节点全部逆置。最后循环遍历原链表的前半部分和逆置得到的后半部分是否相同,如果相同就是回文结构,反之就不是。
2024-03-02 23:01:19
882
原创 C语言从零实现贪吃蛇小游戏
当我们掌握链表这样的数据结构之后,我们就可以用它来做一些小项目,比如童年小游戏贪吃蛇目标:在Windows环境中控制台上使用C语言模拟实现经典小游戏贪吃蛇1: 0)OK,ESC,LEFT,RIGHT,UP,DOWN,//蛇身节点int x;int y;//整条蛇//指向食物的指针int Score;//当前累计分数//一个食物的分数//休眠时间,时间越短,速度越快//游戏运行的逻辑//打印欢迎信息。
2024-02-16 23:59:20
1231
1
原创 数据结构之双向链表
!之前我们介绍了链表的分类,并且详细介绍其中的单链表,这节将会带大家了解另一种重要的链表------双向链表!!!由于双向链表的插入删除比单链表要简单许多,能理解单链表的操作,应该可以很轻松明白双向链表的操作,所以这里不会十分详细的介绍过程如有疑问,可以看看之前的单链表一文exit(1);exit(1);= phead)//尾插//头插//尾删= phead);//保证链表中存在有效节点。
2024-02-10 18:51:35
1303
1
原创 链表经典算法(+OJ刷题)
在上一节,我们介绍了单链表的增,删,查,改接口的实现思路。今天我们就实战运用这些思想来解决一些算法题我们不能只会做这道题,而是应该掌握这道题目背后的算法思维!!!
2024-02-04 23:36:42
1000
5
原创 数据结构(二)------单链表
上一节,我们介绍了顺序表的实现与一些经典算法。1.顺序表指定位置和头部的插入和删除操作的时间复杂度为o(n)。2.增容需要重新申请新的空间,拷贝旧数据,释放旧空间有不小的损耗。3.增容是成倍数的扩容,难免还会存在一定的空间浪费。问题来了:有没有一种数据结构是可以弥补上述顺序表中存在的一些缺点的。答案是肯定的——链表链表的结构就像火车的一节一节的车厢,每节车厢单独用来容纳乘客,但是彼此之间又用链条相互勾连在一起。同时从第一节车厢想要到达第三节车厢必须要经过第二节车厢。
2024-01-28 22:48:46
1580
5
原创 C语言实现简易版通讯录功能
当我们学习结构体类型之后,就可以用它来实现一个小型项目------通讯录,当然是十分简易版,有很多的瑕疵,比如每次程序退出之后,上次的数据由于存在内存中,一旦程序结束,操作系统将内存回收,数据就丢失了,如果想要保留上次的数据,我们需要将数据保存到一个文件中(硬盘)上。以后我们再编写一个优化的程序。以上是实现的全部代码,由于我是分模块去写的,所以需要三个文件。希望对您有所收获!
2024-01-02 21:03:42
419
1
原创 动态内存管理
学习到现在,我们开辟内存的方式有两种:要么创建一个变量,要么用数组开辟一块连续的空间。但是这两种方式一旦申请之后是不能改变大小的,因此这样的方式是有缺点的。C语言中引入了动态内存管理的方式,强调:通过动态内存管理的方式开辟(malloc,calloc,realloc)的空间是在堆区上的。
2023-12-23 16:24:27
965
3
原创 自定义类型---联合体与枚举
基于以上的原因,我们一般情况下不要过多的使用#define.下面我们可以简单举一个应用枚举的例子:这样书写可以更加直观的清楚,一个分支是进入,另一个分支是退出。增加了代码的可读性。
2023-12-22 08:51:22
408
原创 自定义类型---结构体
我们之前学习过数组的使用,数组是相同类型数据的集合。那么对于不同类型的数据的集合又该如何?例如一个人的信息可能有姓名,性别,年龄,电话号码等等,我们想把这些不同类型的数据放在一个变量中,这就引出了结构体的概念。
2023-12-21 14:24:13
871
2
原创 内存函数详解
本节我们将介绍与内存相关的函数,如果喜欢,通过之前两节我们学习了字符串相关函数,其中有一个strcpy函数是用来字符串拷贝的,但是它有一点局限性,就是它只能拷贝字符类型的数据,我们接下来再介绍一种内存拷贝函数,可以以字节为单位来拷贝数据。上图可知,这个函数定义在<string.h>的头文件中,这个函数有三个参数,第一个和第二个参数分别是目标空间和源数据空间的起始地址,第三个参数num表示拷贝从source开向后num个字节的数据到destination中。最后返回目标空间的起始地址。
2023-12-19 18:46:47
363
3
原创 字符串函数(二)
上一小节介绍了一些长度不受限制的字符串函数,但是,那些函数是不太安全的。例如,在strcpy函数在复制的时候是不会考虑目标字符数组能否放的下源字符串,可能会存在越界访问。因此,推出了一些长度受限制的字符串函数,使用起来也相对安全一些。
2023-12-17 23:47:35
954
6
原创 字符函数与字符串函数(一)
这些函数都包含在的头文件中。这些函数的参数都是int类型的,注意,char类型也属于整型家族,因此可以直接将字符当作参数使用。下面举个例子:其他函数与此类似,可以自行尝试。
2023-12-13 16:49:03
79
7
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人