自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【C++】模板及模板的特化

所谓函数模板,实际上是建立一个通用的函数,该函数类型和形参类型不具体指定,而是用一个表示任意类型的虚拟类型来代表(这里的任意类型可以任意选择,如 T)。返回值类型 函数名(参数列表)// .....其中template和class是关键字,typename可以用class关键字代替,在这里typename 和class没区别,括号中的参数叫模板形参,模板形参和函数形参很相像,模板形参不能为空。

2024-06-14 13:53:27 1033 10

原创 【C++】c++11新特性(二)--Lambda函数及function(包装器)

可选的。

2024-04-06 20:52:22 1177 29

原创 【C++】c++11新特性(一)

将花括号列表初始化用于类对象,但要提供与某个构造函数的参数列表匹配的内容,并用大括号括起来。花括号列表初始化可以用于类对象(要隐式类型转换,调用构造函数),是该类要支持单参数或多参数的构造函数(可以是带缺省值的);

2024-04-06 11:29:03 992 18

原创 【数据结构】二叉树---红黑树的实现

键值(key):用于比较和排序节点的值。指向父节点的指针(parent):指向当前节点的父节点。指向左节点的指针(left):指向当前节点的左节点。指向右节点的指针(right):指向当前节点的右节点。颜色(color):表示节点的颜色,通常用一个位来表示,比如红色和黑色。红黑树节点结构的定义表示如下:在这里通过定义枚举结构来表示红、黑两种颜色//定义结点的颜色enum ColorRED, //表示红色BLACK //表示黑色//红黑树的结点定义类模板//指向左结点。

2024-03-15 11:03:16 1005 20

原创 【数据结构】二叉树---AVL树的实现

平衡二叉树,又称AVL树。它可以是一颗空树,或者是具有以下性质的二叉树:即它的左子树和右子树都是平衡二叉树,且左子树和右子树的深度只差的绝对值不超过 1。把二叉树上结点的平衡因子BF定义为该结点的左子树的高度和右子树的高度之差(即平衡二叉树上结点的平衡因子只可能是-1、0 和 1只要二叉树上有一个结点的平衡因子的绝对值大于1,则该二叉树就是不平衡的。说明:后面所用到的平衡因子的都是右子树的高的 - 左子树的高度影响二叉搜索树平衡的操作只能是插入和删除。

2024-03-14 10:24:41 1113 17

原创 【c++】STL--List的实现

一. List的数据结构二. List实现的基本框架1. list的结点结构类2. List的迭代器类正向迭代器反向迭代器3. List操作接口的实现1. 默认成员函数构造函数 和 析构函数拷贝构造函数 和 赋值运算符重载2. 修改相关函数接口insert 和 erasepush_front 和 push_backpop_front 和 pop_back3. 迭代器相关接口begin() 和 end()rbegin() 和 rend()4. 其他相关函数接口。

2024-03-05 09:34:48 957 14

原创 【C++】引用的深层理解

的传参,暴露出一些局限性:

2023-12-20 20:42:01 1437 13

原创 【c++】string的模拟实现

功能:如果字符串对象是 const 限定的,则该函数返回const_iterator。功能:如果字符串对象是 const 限定的,则该函数返回const_iterator。注意:如果不写len(即为默认参数),则会删除pos往后的所有字符(有多少删多少)这是一个全局的交换函数,是一个泛型版本。首先先拷贝构造一个临时对象,在复用上面开始时所说的交换函数,交换两者指针即可。功能:擦除字符串的内容,该字符串将变为空字符串(长度为 0 个字符)。返回值:返回一个新构造的对象,其值初始化为此对象的子字符串的副本。

2023-12-17 13:31:01 267 10

原创 【数据结构】排序(3)—堆排序&归并排序

思想方法:从最后一个元素开始(视为父节点),先找其孩子节点(左孩子或右孩子),与其孩 子结点比较,与大的一方(左孩子或右孩子)交换;思想方法:从第一个结点开始(视为左孩子或右孩子),先找该结点的父结点,在与父节点比较,大的与父结点交换,成为新的父节点;③ 把堆的尺寸缩小 1,并调用 shift_down(0),目的是把新的数组顶端数据调整到相应置;比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置;申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列;

2023-10-06 15:32:26 1716 18

原创 【数据结构】排序(2)—冒泡排序 & 快速排序

在最坏的情况下,待排序的序列为正序或逆序时,递归树是一棵斜树, 此时,快速排序会堕落为冒泡排序,其时间复杂度为O(n^2),不过可以通过优化,使其提升为O(nlogn),总的来说还是O(nlogn)。cur的值与pivotkey的值比较,cur的值小,prev先后移一步,cur再后移;任取待排序元素序列中的某元素作为基准值,按照该排序码将待排序集合分割成两子序列,左子序列中所有元素均小于基准值,右子序列中所有元素均大于基准值,然后最左右子序列重复该过程,直到所有元素都排列在相应位置上为止。

2023-10-03 21:01:35 3954 12

原创 【数据结构】排序(1) ——插入排序 & 希尔排序

当gap == 1时,数组已经接近有序的了,这样就会很快。3. 希尔排序的时间复杂度不好计算,因为gap的取值方法很多,导致很难去计算,因此在一 些书中给出的希尔排序的时间复杂度都不固定。一种排序实施前后,关键码相同的任意两个对象其前后次序没有发生变化,就说明这个排序是稳定的,否则是不稳定的。,也是一种插入排序类的方法,此种方法是在直接插入排序的基础上改进的,在时间效率上有了很大的提高。,具体时间复杂度和数组的有序性也是有关联的。

2023-10-02 14:07:33 420 16

原创 【数据结构】线性表之顺序表的实现

顺序表的概念及结构顺序表的实现初始化顺序表顺序表的增加尾插头插顺序表的删除尾删头删销毁顺序表顺序表查找在pos位置插入元素在pos位置删除元素说明整合源代码。

2023-09-01 17:52:32 188 13

原创 【C语言】字符和字符串的库函数及模拟实现

●。

2023-08-29 13:09:03 262 19

原创 【数据结构】栈及栈的实现

上述代码中扩容的那条语句首先需要判断当前最大容量是否为0,若为0直接扩容多大,否则扩容当前容量的2倍;然后就是动态开辟空间此处用的是 realloc 而没有用 malloc 原因是因为此处用realloc可以避免后面由于开辟的空间不足还要使用realloc进行动态扩容。这里由于一开始数组中元素为零,此时realloc和malloc的作用相同的,因此就避免先使用malloc,在使用realloc扩容的问题 .top的值总比数组元素下标多一,因此,top-1指向栈顶元素。2.2 栈的链式存储表示的实现。

2023-08-20 18:31:36 214 11

原创 【C语言】关于#define宏定义的预处理详解

预定义符号__FILE__ //当前进行编译的源文件__LINE__ //文件当前的行号__DATE__ //文件当前被编译的日期__TIME__ //文件当前被编译的时间__STDC__ //如果编译器遵循ANSI C,其值为1,否则是未定义int main()return 0;运行结果如下:file:E:\code_2023\case_练习-4\case_练习-4\case.cline:7。

2023-08-16 19:20:05 1329 9

原创 【c语言】---数据在内存中的存储(整型、浮点型)

目录目录 一、数据类型详细介绍 1.1 概念 1.2 类型的归类 二、整型在内存中的存储 2.1 原码、反码、补码 2.2 大端及小端存储模式 例题 三、浮点型在内存中的存储 c语言

2023-06-06 19:42:23 227 12

原创 C语言实现三子棋(设计思路及代码实现)

此时x和y应为随机值,使用rand()函数就是生成随机数的函数,取模是生成随机数的范围为0~row/col-1,此时若生成随机数的坐标所对应的棋盘的位置没有被占用,则电脑落子跳出循环,否则会再次生成随机坐标,因此这里使用循环。这里需要在test.c文件中定义一个二维数组并对数组进行初始化操作,初始化数组的函数定义、打印棋盘的函数定义要在game.h头文件中进行声明,在game.c文件中实现对数组的初始化操作以及棋盘打印函数的操作。2. game.c 文件:游戏中各个函数的定义以及函数的实现。

2023-05-09 13:02:51 299 6

原创 函数调用中的传值与传址

因为形参x,y中的4和6并不是实参a和b中的4和6,其实真正参与运算的是形参中的变量,通俗的讲x和y只是a和b的副本,就好比一份复印件,你在复印件上写写画画,但是你的原件依然是之前的样子。如果在执行一个被调用函数时,形参的值发生改变,不会改变主调函数的实参的值。实参和形参是两个不同的存储单元。在调用有参函数过程中,主调函数和被调函数之间有值的传递关系,系统会把实参的值传递给被调用函数的形参。这种传参方式可以让函数和函数外边的变量建立起真正的联系,也就是函数内部可以直接操 作函数外部的变量。

2023-04-23 16:07:50 860 11

原创 break和continue语句的使用

那是因为n自增到5时满足if语句的判断条件从而进入if语句执行了break语句,其break语句的作用就是提前终止循环,即直接跳出整个循环体,从而导致整个循环提前结束,也即13、14两行的语句都不会执行,5、6、7、8、9、10也就不会输出,循环就结束了。执行结果中没有5输出,其原因是当n等于5时if语句的判断条件为真,就进入if语句执行continue,从而跳过本次循环continue后边的代码,直接去while循环的判断部分执行下次循环了,而5就没有机会打印输出了。循环,而接着执行下次循环。

2023-04-17 16:48:30 4727 8

原创 理解和如何使用关键字auto、static、extern、register

C的存储类型包括4种即auto一、auto---自动变量函数中定义的局部变量,如果不专门声明为static(静态)存储类别,都是动态地分配存储空间的,数据存储在动态存储区中,在调用函数时,系统会给这些变量分配存储空间,在函数调用结束时就会自动释放这些存储空间。这类局部变量称为自动变量。自动变量使用关键字auto作存储类别的声明。int test()//定义a为自动变量其中,a是自动变量,对a赋值为3,执行完test后,自动释放 a所占的存储单元。实际上,关键字auto可以省略,

2023-04-13 18:27:19 1433 6

原创 编程目标规划

自我介绍: hi 大家好呀!首先呢先自我介绍一下吧,我是一名毕业不久小白,在大学期间并非计算机专业,但是对计算机编程却有着浓厚的兴趣,学习编程并非一日之功,而是日常点点滴滴的积累,所以我决定要从基础开始好好学习编程,希望自己在这方面有好的发展,也能够突显出这方面的能力。编程目标: 首先从最基础的开始,打好基础,能够掌握一项编程技能,然后能够做出一些实战项目。怎样学习编程: 多阅读一些编程相关的书籍和代码,不能光学习理论要多动手,在实践中加深对知识的理解,基本上保证每天都能够抽出时间去敲代码和学

2023-04-09 20:28:24 123 3

空空如也

空空如也

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

TA关注的人

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