自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 类与对象(中)

MyQueue没有实现构造函数而是调用Satck的默认构造。5. 像Date这样的类成员变量全是内置类型且没有指向什么资源,编译器自动生成的拷贝构造就可以完成需要的拷贝,所以不需要我们显示实现拷贝构造。像Stack这样的类,虽然也都是内置类型,但是_a指向了资源,编译器自动生成的拷贝构造完成的值拷贝/浅拷贝不符合我们的需求,所以需要我们自己实现深拷贝(对指向的资源也进行拷贝)。像MyQueue这样的类型内部主要是自定义类型Stack成员,编译器自动生成的拷贝构造会调用Stack的拷贝构造

2024-07-17 16:39:16 639 4

原创 类与对象(1)

类与对象(上篇),介绍类的定义,实例化,this指针,分析了C语言和C++实现stack的对比

2024-07-13 22:15:00 1090 3

原创 C++入门基础

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

2024-07-12 01:08:10 979

原创 非比较排序—计数排序/基数排序/桶排序

计数排序是一个稳定的排序算法。当输入的元素是n个范围为range的整数时,时间复杂度是O(N + range),空间复杂度也是O(N + range),其排序速度快要任何比较排序算法。当range不是很大,并且序列比较集中时,计数排序是一个很有效的排序算法。

2024-07-05 18:24:29 864 3

原创 归并排序详解(递归与非递归)

一篇文章详细介绍递归与非递归实现归并,各种小细节讲解拉满

2024-07-02 13:41:23 442 1

原创 一篇文章带你彻底搞懂十大经典排序之——快速排序

递归和非递归实现快速排序,hoare法,挖坑法,前后指针法讲解

2024-06-27 21:07:05 630

原创 十大经典排序算法——选择排序和冒泡排序

一篇文章掌握十大经典排序算法之选择排序和冒泡排序

2024-06-23 18:47:56 484

原创 十大经典排序算法——插入排序与希尔排序(超详解)

(1)元素集合越接近有序,直接插入排序算法的时间效率越高(2)时间复杂度:O((3)空间复杂度:O(1),是一种稳定的排序算法(4)稳定性:稳定(1)希尔排序是对直接插入排序的优化(2)当gap > 1时都是预排序,目的是让数组更接近与有序。当gap == 1时,数组已经接近有序了,这样就会很快。对整体而言,可以达到优化的效果。(3)希尔排序的时间复杂度不好计算,因为gap的取值方式有很多种,导致难以计算。大约是在O()左右。(4)稳定性:不稳定。

2024-06-22 21:24:43 920

原创 二叉树系列题

【代码】二叉树系列题。

2024-06-04 20:29:28 397 3

原创 二叉树链式结构的实现

数组中最后一层数据是连续存放的(可以不存满),空节点和非空节点是连续的(如果后面全空就是完全二叉树,后面有非空就不是完全二叉树)。

2024-06-02 16:06:43 969

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

树是一种非线性的数据结构,它是有n(n > 0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一颗倒挂的树,也就是说它是根朝上,而叶朝下。树结构相对线性表就比较复杂,要存储表示起来就比较麻烦,既然保存值域,也要保存结点和结点之间的关系,实际上数有很多表示方式比如:双亲表示法,孩子表示法,孩子双亲表示法以及孩子兄弟表示法等。我们这里就简单的理解其中最常用的孩子兄弟表示法。二、二叉树的概念及结构1.概念由上图可知: 注意:对于任意的二叉树都是有以下几种情况符合而成的:(1)满

2024-05-29 16:46:09 1023 8

原创 二分查找系列题

由于数组已经排序,因此整个数组是单调递增的,我们可以利用二分查找来加速查找的过程。考虑target开始和结束位置,其实我们要找的就是数组中“第一个等于target的位置”和“第一个大于target的位置减一”。函数lowerBound找出数组中“第一个等于target的位置”,函数lowerBound2函数找出数组中“第一个大于target的位置”。

2024-05-21 08:12:56 1017 1

原创 2563.LeetCode—统计公平数据对的数目(二分查找/双指针)

构造函数计算使num[i]+nums[j] <= upper成立的数据对个数,和使num[i]+nums[j] < lower成立的数据对个数,算出的两个值的差,就是满足题意的公平数对的个数。函数:双指针分别指向数组的两端,满足num[left] + nums[right] <= val(所传入的参值),left指向的元素与区间[left,right]的所有元素都可以组成数据对用ret记录满足条件的数据对的个数。

2024-05-20 00:15:00 370 1

原创 排序算法系列题(双指针应用)

● 如果左指针left指向的元素等于val,就将右指针right指向的元素复制到左指针left的位置,然后右指针right左移一位。如果赋值过来的元素恰好等于val,可以继续把右指针right指向的元素值赋值过来(左指针left指向的等于val的元素的位置继续被覆盖),直到左指针指向元素的值不等于val为止。● 如果左指针left指向的元素不等于val,就将左指针右移一位。当左右指针重合的时候,左右指针遍历完数组中的所有元素。这样的方法两个指针在最坏的情况下,合起来只遍历了数组一遍。

2024-05-19 00:15:00 1048 1

原创 NATLAB基础—矩阵的表示

MATLAB中还有一个函数可以生成行向量。

2024-05-18 00:15:00 531

原创 MATLAB基础—数值数据

• 一个三位正整数除以10取整后就去掉了这个数的个位数字,将新得到的数再除以10取余数,这个余数就是新得到的数的个位数字,也就是原数的十位数字。• 一个三位正整数除以100取整后就去掉了这个数的个位数字和十位数字,得到百位数字。• 一个三位正整数除以10的余数就是该数的个位数字。

2024-05-17 00:15:00 912

原创 MATLAB基础—变量及其操作

表达式使用实例:

2024-05-16 00:15:00 575

原创 LeetCode—有效的括号(栈的应用)

一.题目二.思路遇到左括号就入栈,遇到右括号,就将左括号出栈,查看二者是否匹配如果最后栈不为空,说明左括号与右括号数量不匹配,左括号比右括号多。三.参考代码typedef int STDataType;typedef struct Stack{ STDataType* a; int top; int capacity;}ST;// 初始化和销毁void STInit(ST* pst){ assert(pst); pst->a = NU

2024-05-15 00:15:00 277

原创 LeetCode—用栈实现队列

【代码】LeetCode—用栈实现队列。

2024-05-14 00:15:00 366

原创 LeetCode—设计循环队列(两种方法)

入队列时,将新的元素尾插插入到链表的尾部;出队列时,将链表的都节点返回,并将头指针指向下一个节点。

2024-05-14 00:00:00 598 2

原创 数据结构初阶—栈和队列

进行数据的插入和删除操作的一端称为栈顶,另一端称作栈底。后进先出LIFO(Last In First Out)入数据在栈顶。

2024-05-13 00:30:00 760

原创 LeetCode—用队列实现栈

为保证后入先出,我们将非空队列的前size-1个数据转移到空队列中去,剩下来的那一个数据就是栈顶元素。为了防止局部变量出作用域后销毁,这里要malloc新的结构体。两个队列都为空才能说明栈是空的。

2024-05-12 20:06:22 682

原创 MATLAB基础—系统环境

(红色)MATLAB主窗口是MATLAB的程序窗口,他除了嵌入一功能窗口外,主要包括功能区(1),快速访问工具栏(2),和当前文件夹工具栏(3)。(绿色)(蓝色)(橙色)

2024-05-12 00:15:00 736

原创 链表详解—单链表与双向链表

我们可以用到重命名typedef,用STDateType代替链表要保存的数据类型。

2024-05-11 00:15:00 992

原创 顺序表详解及应用(通讯录的实现)

(2)能够保存用户信息:名字,性别,年龄,电话,地址等。(1)至少能存储100个人的通讯信息。(3)增加联系人信息。(4)删除指定联系人。(5)查找指定联系人。(6)修改指定联系人。(7)显示联系人信息。

2024-05-10 00:15:00 556

原创 LeetCode—随机链表的复制(深拷贝)

1.将拷贝节点插入到原节点后面2.深拷贝3.将新节点拿下来尾插形成新链表,恢复原链表。

2024-05-09 00:15:00 370

原创 带环链表(由简单到深入)—C语言实现

(2)慢指针进入环后,快指针肯定会在慢指针走一圈之内追上慢指针。

2024-05-08 15:17:43 1147 4

原创 无重复字符的最长子串—滑动窗口应用

滑动窗口演示。

2024-04-28 01:00:00 404 3

原创 LeetCode—两数相加(链表)

【代码】LeetCode—两数相加(链表)

2024-04-27 15:26:14 262 1

原创 手撕LeetCode—相交链表

先假设A链表的长度长,B链表的长度短,如果实际情况与假设不符再更改假设。这道题我们利用一下假设法,扩展一下思维。

2024-04-26 00:30:00 362

原创 牛客—链表的回文结构

回文可以理解为数学上的对称。我们初步分析思路:我们来判断一下(3)向后遍历的停止条件:由图可知:无论是奇数还是偶数个节点,遍历的结束条件都是两个指针的next指针指向NULL!

2024-04-25 14:55:27 444 1

原创 C语言实现—贪吃蛇(这么牛逼的博文是谁写的!)

Windows 这个多作业系统除了协调应⽤程序的执⾏、分配内存、管理资源之外, 它同时也是⼀个很⼤ 的服务中⼼,调⽤这个服务中⼼的各种服务(每⼀种服务就是⼀个函数),可以帮应⽤程序达到开启 视窗、描绘图形、使⽤周边设备等⽬的,由于这些函数服务的对象是应⽤程序(Application), 所以便 称之为 Application Programming Interface,简称 API 函数。WIN32 API也就是Microsoft Windows 32位平台的应⽤程序编程接⼝。

2024-04-24 19:27:59 1355 1

原创 C语言:自定义类型—结构体(玛雅,太细了吧!)

(1)位段的成员必须是int,unsigned int,或者signed int,在C99中位段成员的类型也可以选择其他类型。(2)位段的成员名后边有一个冒号和数字(表示该成员占用多少个比特位)。(3)位段是专门用来节省内存的!A就是一个位段类型//位段式的结构struct Aint _a:2;int _b:5;int _c:10;int _d:30;

2024-04-22 14:16:06 701

原创 atoi函数详解及其模拟实现——一篇文章带你彻底搞懂atoi

一篇文章带你彻底搞懂atoi函数!

2024-04-19 01:00:00 1833 1

原创 LeetCode—单链表应用之求链表的中间节点(快慢指针)

不能写成while(fast->next && fast),

2024-04-18 12:00:00 144

原创 LeetCode—单链表应用之反转链表(算法)

1.题目:2.思路:创建三个指针,实现原链表的翻转 !(1)设想:将每个节点的next指针指向前一个节点,最后将原链表原本的头结点指向空。(2)三个指针的初始化:第一个指针n1指向NULL,第二个指针n2指向原链表的第一个有效数据所在的节点,第三个指针n3指向n2所指向节点的下一位节点。(3)用三个指针实现链表翻转的方法有点难想,但如果能想到,代码实现很简单。3.代码实现

2024-04-17 12:00:00 160

原创 牛客—环形链表的约瑟夫问题(循环链表的经典应用)

要销毁pcur所在的节点,prev指针指向pcur的下一个节点,释放掉pcur后,让pcur指针重新指向prev指针所指向节点的下一个节点。此时,count要初始化为1(后续count重新从1开始计数!初始化时prev指向链表中第一位有效数据所在的节点,pcur指向prev的下一个节点。pcur和prev指针都要后移一位, 并且count要++,以达到计数的效果。count用来计数,初始化count = 1。

2024-04-16 12:00:00 282

原创 手撕LeetCode面试题—分割链表

小链表用于存放原链表中数据小于特定值x的节点;大链表用于存放原链表中数据大于或等于特定值x的节点。最后将小链表的尾节点与大链表的头结点连接起来。

2024-04-15 15:05:35 358

原创 LeetCode—单链表应用之合并两个有序链表(算法)

l1l2。

2024-04-14 15:10:18 280

原创 LeetCode—单链表应用题:移除链表元素(C语言)

删除链表中所有节点值等于特定值的节点,可以用递归实现。

2024-04-13 21:22:37 227

空空如也

空空如也

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

TA关注的人

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