自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【C++】C++的简要介绍

C语言是结构化和模块化的语言,适合处理较小规模的程序。对于复杂的问题,规模较大的程序,需要高度的抽象和建模时,C语言则不合适。为了解决软件危机,20世纪80年代,计算机界提出了OOP(object oriented programming:面向对象)思想,支持面向对象的程序设计语言应运而生。1982年,Bjarne Stroustrup博士在C语言的基础上引入并扩充了面向对象的概念,发明了一种新的程序设计语言。为了表达该语言与C语言的渊源关系,命名为C++。

2024-02-06 18:59:21 2456 8

原创 【数据结构】排序之冒泡排序和快速排序

简单不先于复杂,而是在复杂之后。

2024-02-05 13:19:35 1451 6

原创 【数据结构]排序算法之插入排序、希尔排序和选择排序

简单不先于复杂,而是在复杂之后。

2024-02-04 20:48:56 1346 1

原创 【数据结构】二叉树链式结构的实现

设二叉树的根节点所在层数为1,层序遍历就是从所在二叉树的根节点出发,首先访问第一层的树根节点,然后从左到右访问第2层上的节点,接着是第三层的节点,以此类推,自上而下,自左至右逐层访问树的结点的过程就是层序遍历。由于现在所学的内容不够让我们深入掌握二叉树结构,为了降低学习成本,此处手动快速创建一颗二叉树,快速进入二叉树操作学习,等二叉树结构了解的差不多时,后面的博客再来研究二叉树真正的创建方式。从概念中可以看出,二叉树定义是递归式的,因此后序基本操作中基本都是按照该概念实现的。

2024-02-03 22:27:59 912 3

原创 【数据结构】堆的实现及应用

简单不先于复杂,而是在复杂之后。

2024-02-02 16:45:32 1096 1

原创 【数据结构】树和二叉树的概念及结构

通常的方法是链表中每个节点由三个域组成,数据域和左右指针域,左右指针分别用来给出该结点左孩子和右孩子所在的链接点的存储地址。:若一个节点含有子节点,则这个节点称为其子节点的父节点;:以某节点为根的子树中任一节点都称为该节点的子孙。:一个节点含有的子树的根节点称为该节点的子节点;(亲兄弟)具有相同父节点的节点互称为兄弟节点;:度为0的节点称为叶子节点;:从根到该节点所经分支上的所有节点;:一个节点含有的子树的个数称为该节点的度;:从根开始定义起,根为第1层,根的子节点为第2层,以此类推;

2024-02-01 21:47:31 1491 2

原创 【数据结构】双向带头循环链表实现及总结

顺序表优点:尾插尾删效率很高。随机访问。(用下标访问)’相比链表结构:cpu高速缓存命中率更高。​顺序表缺点:头部和中部插入删除效率低。 —O(N)扩容。 性能消耗+空间浪费链表优点:任意位置插入删除效率很高。 O(1)按需申请释放。链表缺点:不支持随机访问

2024-01-31 08:04:40 815 7

原创 【数据结构】链表的一些面试题

如果N是奇数,距离会减少到1,fast会越过slow指针,fast和slow之间得距离变成了-1,也就是C-1,(C-1是环长度),如果C-1是偶数,再追一圈就可以追上,如果C-1是奇数,永远追不上;此时,两个指针每移动一次,之间的距离就缩小一步,不会出现每次刚好是套圈的情况,因此:在慢指针走到一圈之前,快指针肯定是可以追上慢指针的,即相遇。快慢指针,即慢指针一次走一步,快指针一次走两步,两个指针从链表起始位置开始运行,如果链表带环则一定会在环中相遇,否则快指针率先走到链表的末尾。

2024-01-30 23:10:34 1056

原创 【数据结构】队列

队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出,FIFO(First In First Out)队列也可以用数组和链表的结构实现,使用链表的结构实现更优一些,因为如果使用数组的结构,出队列在数组头上出数据,效率会比较低。3.循环队列的存储空间为 Q(1:100) ,初始状态为 front=rear=100。,2,3,4 ,进栈过程中可以出栈,则下列不可能的一个出栈序列是()后, front=rear=99 ,则循环队列中的元素个数为( )D 读取队头元素的值。

2024-01-08 08:00:00 370

原创 【数据结构】栈

栈中的数据元素遵守后进先出 LIFO (Last In First Out)的原则。数据结构的栈和操作系统的栈不是一个概念,这是两个学科的东西,但都符合后进先出。栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。压栈:栈的插入操作叫做进栈/压栈/入栈,因为数组在尾上插入数据的代价比较小。,相对而言数组的结构实现更优一些。出栈:栈的删除操作叫做出栈。栈的实现一般可以使用。

2024-01-07 08:00:00 431

原创 【数据结构】链表简介及单链表的实现

任意位置高效插入删除要交给之后文章讲解的双向链表。单链表只适合头插头删,时间复杂度 O(1)单链表只适合头插头删,时间复杂度 O(1),非顺序的存储结构,数据元素的。

2024-01-05 08:00:00 584

原创 【数据结构】一些数组面试题以及顺序表的思考

若 nums1 的数先结束比较,那么可以不做任何操作,但是如果 nums2 先结束,就需要把 nums2 中剩余的数拷贝到 nums1 中。//end1 结束, nums1的数组都拷贝过去了,需要再把nums2剩下的数据拷贝过去。//end2 结束, nums2的数组都拷贝过去了,不用处理。思考:该如何解决以上问题?

2024-01-04 08:00:00 420

原创 【数据结构】顺序表

静态的顺序表是有缺陷的,静态顺序表在创建时需要指定一个固定的大小,这个大小通常在编译时就确定了。如果实际数据量超过了静态顺序表的大小,就可能导致溢出或者需要重新定义一个更大的静态顺序表,这会浪费内存或者导致程序运行错误。一般是扩容2倍比较合适,其他倍数也可行,只不过扩容扩多了会存在空间浪费,扩少了就会导致频繁扩容,效率损失,所以扩容2倍比较合适。但是在物理结构上不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储。静态顺序表的定长数组导致 N 定大了,空间开多了浪费,开少了不够用。

2024-01-03 06:34:52 1024

原创 【数据结构】算法的时间复杂度和空间复杂度

递归实现的斐波那契数列的空间复杂度为 O(N),这是因为在递归调用的过程中,系统会使用一个调用栈(call stack)来存储每次递归调用的信息。在斐波那契数列的递归实现中,对于每个 n,会有两个递归调用,即 F(n-1) 和 F(n-2)。因此,递归调用的深度就是二叉树的高度,即 N。递归的时候每次调用函数要创建栈帧,每次调用的函数栈帧是常数个,调用N+1次函数,所以空间复杂度是O(N)。一个算法执行所耗费的时间,从理论上说,是不能算出来的,只有把程序放在机器上跑起来,才能知道。

2024-01-02 19:53:22 1458

原创 【C语言】文件操作

磁盘上的文件是文件。但是在程序设计中,我们一般谈的文件有两种:程序文件、数据文件(从文件功能角度来分类的)。

2024-01-01 13:18:42 878

原创 【C语言】动态内存管理

malloc。

2023-11-16 21:46:35 216

原创 【C语言】自定义类型:结构体、枚举、联合

有了结构体类型,定义结构体变量就很简单了。int x;int y;//声明类型的同时定义变量p1并初始化//定义结构体变量p2int main()//初始化:定义变量的同时赋初值return 0;int n;char ch;位段的成员必须是 int、unsigned int 或 signed int。

2023-11-15 14:24:22 483

原创 【C语言】字符函数、字符串函数与内存函数

简单不先于复杂,而是在复杂之后。0. 前言。

2023-10-27 20:58:47 210

原创 【C语言】一些指针笔试题解析

简单不先于复杂,而是在复杂之后。1. 笔试题 12. 笔试题 23. 笔试题 34. 笔试题 45. 笔试题 5。

2023-07-04 22:37:34 322 7

原创 【C语言】指针和数组笔试题解析

简单不先于复杂,而是在复杂之后。1. 一维数组。

2023-07-03 21:02:05 196

原创 【C语言】指针进阶[下](回调函数(模拟实现qsort-采用冒泡方式))

简单不先于复杂,而是在复杂之后。1. 回调函数。

2023-07-03 16:06:56 314

原创 【C语言】指针进阶[中](函数指针、函数指针数组、指向函数指针数组的指针)

总的来说,这个代码演示了如何使用函数指针作为参数,将函数作为参数传递给另一个函数,并在另一个函数内部调用传递进来的函数。因为函数名本身就是指向函数的指针,因此在这里加上括号,也可以看作是将函数名转化为指向函数的指针。因为函数指针本质上是一个指针,存储了一个函数的地址,因此可以通过函数指针调用对应的函数。同样,先不要向下滑,思考几分钟,能否理解这段代码的意义。,表示对函数指针进行解引用操作,得到的是指向函数的指针。,它的参数是一个函数指针,指向一个可以接受两个。那要把函数的地址存到一个数组中,这个数组就叫。

2023-07-03 10:00:00 139

原创 【C语言】实用调试技巧(vs2019)

简单不先于复杂,而是在复杂之后。1. 什么是bug?导致计算机不能正常工作的错误叫做bug。2. 调试是什么?所有发生的事情都一定有迹可循如果问心无愧,就不需要掩盖也就没有迹象了如果问心有愧,那就一定会有迹象顺着这条途径顺流而下就是犯罪,逆流而上,就是真相每一次调试都是尝试破案的过程。

2023-07-02 17:18:43 1894

原创 【C语言】三子棋小游戏的思路及实现(内附代码)

简单不先于复杂,而是在复杂之后。1. 分文件实现当我们实现一个有较多功能的三子棋小游戏时,我们要用到许多库函数,需要包含头文件,还有符号的定义,函数的声明等等,还要写很多“高内聚、低耦合”的函数来实现具体的一些功能,所以代码量会非常庞大。我们就需要在一个工程里创建多个文件,赋予其不同的分工,来使我们的程序可读性提高,清晰易懂。2.分步骤实现。

2023-05-15 09:00:00 459 4

原创 【C语言】深度剖析数据在内存中的存储

简单不先于复杂,而是在复杂之后。1. 数据类型介绍基本的内置类型1. 使用这个类型开辟内存空间的大小(大小决定了使用范围)2. 如何看待内存空间的视角1.1 类型的基本归类char - 字符的本质是ASCLL码值,是整型。自定义类型:我们可以创造出新的类型void 表示空类型(无类型)通常应用于函数的返回类型、函数的参数、指针类型2.整型在内存中的存储一个变量的创建是要在内存中开辟空间的,内存的的大小是根据不同的类型决定的。数据在开辟内存中究竟是如何存储的?

2023-04-28 18:42:19 843 9

原创 【C语言】指针进阶[上] (字符、数组指针、指针数组、数组传参和指针传参)

简单不先于复杂,而是在复杂之后。1. 字符指针指针的概念:1. 指针就是个变量,用来存放地址,地址唯一标识一块内存空间。2. 指针的大小是固定的4/8个字节(32位平台/64位平台)3. 指针是有类型的,指针的类型决定了指针+-整数的步长,指针解引用的权限。4. 指针运算在指针的类型中有一种类型叫字符指针所以在我们敲代码的时候,把常量字符串首字符地址赋给指针变量的时候,最好前面加上const,保护字符串不被更改面试题。

2023-04-24 22:39:59 1015 15

原创 【C语言】浅涉结构体(声明、定义、类型、定义及初始化、成员访问及传参)

p3, p4;float f;int main()struct Peo p1 = { "张三","123456677","男","181" };//结构体变量的初始化struct St s = { {"李四","1233244","女","166"}, 100,3.14f };return 0;

2023-04-17 09:00:00 386 9

原创 【C语言】初阶指针(指针运算、二级指针及指针数组)

简单不先于复杂,而是在复杂之后。

2023-04-17 00:09:23 281 6

原创 【C语言】初阶指针(指针及其类型以及野指针)

指针的类型决定了,对指针解引用的时候有多大的权限(能操作几个字节)。比如:char* 的指针解引用就只能访问一个字节,而int* 的指针解引用就能访问四个字节。

2023-04-15 23:57:48 393 16

原创 【C语言】9000字长文操作符详解

在C语言中,0表示假,非0表示真。&取出的是变量在内存中的起始地址。

2023-04-14 23:32:43 327 6

原创 【C语言】详解数组(数组的创建和初始化、数组越界以及作为函数参数)

简单不先于复杂,而是在复杂之后。

2023-04-11 21:04:50 845 7

原创 【C语言】递归解决经典题目(汉诺塔问题、青蛙跳台阶问题)

汉诺塔问题是一种经典的递归问题,起源于印度传说中的塔 of Brahma。问题描述如下:有三个柱子A、B、C,A柱子上有n个盘子,这些盘子大小不一,且从上到下依次变大,现在需要将A柱子上的盘子全部移动到C柱子上,移动的过程中必须满足以下每次只能移动一个盘子;盘子可以移动到任意柱子上,但是必须保证较大的盘子不能放在较小的盘子上面;每个盘子移动的过程中都必须放在柱子的顶端。问题的目标是用最少的步数将所有盘子从A柱子移动到C柱子。汉诺塔问题可以通过递归的方式解决。假设有n个盘子。

2023-04-11 16:04:18 663 4

原创 【C语言】函数详解(嵌套调用和链式访问、声明及定义、递归)

1. 告诉编译器函数叫什么,参数类型是什么,返回类型是什么。但具体是不是存在,函数声明决定不了。2. 函数的声明一般出现在函数的使用之前。要满足先声明后使用。3. 函数的声明一般要放在头文件中的//函数的声明和定义int main()int a = 0;int b = 0;//加法return 0;//函数的定义函数的定义是指函数的具体实现,交代函数的功能实现。

2023-04-10 09:30:00 3131 5

原创 【C语言】5000字长文函数详解(函数分类、 参数以及调用)含练习代码

如果库函数可以干所有事情,那还要程序员干什么?所以比库函数更重要的是自定义函数。自定义函数和函数一样,有函数名、返回值类型和函数参数。但不一样的是自定义函数由我们自己设计,给程序员一个很大的发挥空间。statement;//语句项ret_type//返回类型fun_name//函数名para1//函数参数举个例子:写个函数找出两个整数的最大值写一个函数交换两个整型变量的内容:但是这个是一个有问题的代码。

2023-04-09 08:53:06 213 6

原创 【C语言】猜数字游戏的实现

1.产生一个随机数2.猜数字3.可能猜大了4.可能猜小了5.直到猜对了结束。

2023-04-08 08:20:01 1869 2

原创 【C语言】有关循环的一些练习代码

简单不先于复杂,而是在复杂之后。

2023-04-03 15:20:19 738 3

原创 【C语言】循环语句(do while循环)

循环至少执行一次,使用场景有限,所以不是经常使用。使用频率:1.for2.while3.do while

2022-07-21 10:32:54 10500 2

原创 【C语言】循环语句(for循环)

表达式1表达式1为初始化部分,用于初始化循环变量的。表达式2表达式2为条件判断部分,用于判断循环什么时候终止。表达式3表达式3为调整部分,用于循环条件的调整。

2022-07-20 22:58:13 362 1

原创 【C语言】循环语句(while循环)

已经掌握了 if 语句,当条件满足情况下,if 语句后的语句执行,否则不执行。但是这个语句只会执行一次。由于有些事情要完成很多次,C语言中引入了 while语句,可以实现循环。

2022-07-20 22:20:33 454 1

原创 【C语言】分支语句(if、switch)

C语句可分为以下五类表达式语句函数调用语句控制语句复合语句空语句控制语句用于控制程序的执行流程,以实现程序的各种结构方式,他们有特定的语句定义符组成,C语言有九种控制语句。C语言是【结构化】的程序设计语言顺序结构循环结构for、while、dowhile选择结构if、swtich可分为以下三类1.条件判断语句也叫分支语句if语句、switch语句2.循环执行语句dowhile语句、while语句、for语句3.转向语句。...

2022-07-20 21:41:45 291 1

空空如也

空空如也

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

TA关注的人

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