自定义博客皮肤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++类和对象(一)

C++中的结构体可以定义函数,但是c的结构体是不行的,因为在C++中我们把结构体也当作是类,这个类的默认访问权限是public的(为了兼容C)类的定义 class Person { //类体:由成员变量和成员函数组成 }; //这里一定要由分号类的访问修饰限定符CPP中类的访问修饰限定符一共有三种,他们分别是public,protected和private,public修饰的成员在类内外都可以随便访问,而protected和private修饰的成员只能在类内访问。类..

2022-01-18 15:38:22 133

原创 C++引用详解

C++引用详解引用,理解为为操作对象起了个别名。int& b = a; //这时候b就是a的别名,共用这同一块空间int c = 30;int d = c; //d只是把c空间中的值拷贝了一份放到自己空间引用特性引用在定义时必须初始化一个变量可以有多个引用引用一但引用了一个操作对象,那么它引用的操作对象不可以被改变常引用 - const的引用以可把引用绑定到const对象上,我们称之为常量的引用,简称常引用值得注意的是常引用的权限改变问题,我们往下着重讨论c

2021-12-06 19:38:33 702

原创 LeetCode [142. 环形链表 II]

本题来源于这里讲解部分首先使用快慢指针去遍历这个链表,第一个指针叫slow,第二个指针叫fast,他们都从head处开始,fast每次走两个next,slow每次走一个next,如果fast走到了NULL,那么这个链表是一定没有环的,反之,如果fast因为在环中套圈,那么当两个指针相遇时,说明了他们套圈了,链表也就有环了,也就是slow == fast时说明链表有环。下面我们来思考为什么fast比slow走快一个单位一定会追上slow与slow相遇,而不是直接略过slow,。首先,因为是快走一个单位

2021-10-25 19:19:48 140

原创 常见字符串函数实现

今天模拟实现了一些c语言中stirng.h头文件中的常见函数。1.memmove与memcpy作用:把一段内存的内容移动到另一段内存中和复制内存内容到另一端内存中。void* myMemmove(void* dest, const void* src, size_t count){ assert(dest && src); if (src > dest) { //向前拷贝 - 从前拷贝 for (int i = 0; i < count; i++) {

2021-09-27 18:39:15 185 1

原创 c++primer第五版中文版第三章学习笔记

第三章笔记由于本章节涉及很多指针和数组的知识,笔者之前的有过c语言基础,所以这部分知识不做重复的笔记。命名空间的using声明,通过using声明,可以做到省去很多重复劳动。//正常情况下std::cout << "Hello world!" << endl;当使用了using声明之后可以不写std#include <iostream>using std::cout; //using 声明int main(){ cout <<

2021-08-25 04:29:11 153

原创 c++primer第五版中文版第二章学习笔记

第二章笔记C++算术类型其中char16_t 和 char32_t 是为Unicode(是用于表示所有自然语言中字符的标准)字符集服务。类型转换当把非布尔类型赋值给布尔类型时,如果结果是0则为false,非0则为true。int a = 3;bool temp = a; //temp的值为true当把布尔值赋值给非布尔值时,如果赋过去的是false则结果为0,是true则结果为1。bool a = true;bool b = false;int c = a; /

2021-08-22 17:07:30 106

原创 C++多态底层剖析

多态的概念多态是C++三大面向对象特性之一多态分为两类:1.静态多态:重载就是静态多态2.动态多态:派生类和虚函数实现运行时多态静态多态和动态多态区别:静态多态的函数地址是在编译时就确定的,而动态多态函数地址在运行时才确定。以下是多态的案例://动物类class Animal{public: //动物运动函数 virtual void move() { cout << "动物在运动" << endl; }};//鱼类继承动物类class Fis

2021-08-13 17:39:10 327 2

原创 C++this指针----看这篇就够了

介绍在C++中,成员变量和成员函数是分开存储的,每一个非静态成员函数只会诞生一份函数实力,也就是说多个同类型的对象会共用这一个函数,那么当代码需要调用对象自己的时候,要怎么去区分那个对象是自己的呢?C++通过特殊的对象指针,this指针,解决了上述问题,this指针指向被调用成员函数所属的对象听到这里如果很懵,没有关系,下面我们给出例子进行理解:比如有以下代码class Person{public: //默认构造函数 Person() { } //拷贝构造函数 Person(co

2021-08-08 23:16:01 330

原创 二叉树三种遍历(先序,中序,后序)----超详细

介绍二叉树的遍历有许多种,例如深度优先搜索,广度优先搜索,在这里,我只介绍先序,中序,后序三种的递归与非递归遍历方法。

2021-07-29 16:07:55 3284

原创 搞定kmp算法

介绍在计算机科学中,Knuth-Morris-Pratt字符串查找算法(简称为KMP算法)可在一个字符串S内查找一个词W的出现位置。一个词在不匹配时本身就包含足够的信息来确定下一个匹配可能的开始位置,此算法利用这一特性以避免重新检查先前匹配的字符。以上都是屁话,在c语言中,实现此功能的库函数叫做strstr,它被放在了string.h头文件中,这个函数的功能,用白话说就是给定一个主字符串和副字符串,之后再主字符串中找到副字符串。例如:字符串s = abcdefgg;字符串t = cdef;多余的

2021-06-18 00:44:07 506 5

原创 你知道这两个C语言小知识吗?

文章目录前言一、局部变量和全局变量二、C语言常量总结前言这两个C语言中需要注意的小知识你都了解了吗一、局部变量和全局变量局部变量和全局变量的区别,通俗的说,就是局部变量在花括号内部,而全局变量在花括号外部,那么这样会引出一个问题-局部变量和全局变量的作用域分别是哪?我们说:局部变量的作用域也就是局部变量的范围,换句人话就是它所在的花括号内,如下所示:int main(){ {//1 int a = 100; printf("%d\n", a); }//2 //大括号外不能再用

2021-06-05 14:36:01 1041 7

原创 一个现在的小菜鸡的自述

我是一个来自普通高校计算机专业的计算机学生,来到csdn主要是为了能够记录自己提升代码能力的过程,想着以后要是复习或是回忆起来都会比较方便。对于变成

2021-06-02 22:35:53 2050 23

原创 数据结构--单链表的实现(c语言实现)

C语言中动态链表的实现

2021-05-31 00:25:31 325 3

原创 leetcode刷题day4

本题来源于206. 反转链表题目如下:给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。示例 1:输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]示例 2:输入:head = [1,2]输出:[2,1]示例 3:输入:head = []输出:[]提示:链表中节点的数目范围是 [0, 5000]-5000 <= Node.val <= 5000思路我的思路是从A开始,通过改变指向来实现翻转:首先,要把这个链表倒过来,我们需要

2021-05-26 23:47:00 171 1

原创 数据结构--顺序表的实现(c语言实现)

最近终于开始学数据结构了,开个坑记录一下首先,顺序表是一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。顺序表一般可以分为:1.静态顺序表:使用定长数组存储。2.动态顺序表:使用动态开辟的数组存储。我实现的就是一个动态顺序表。首先要思考这个鬼东西要能做什么,增删查改这肯定是必须的了,其他的接口我依次列出://初始化void SeqListInit(SL *ps);//破坏顺序表void SeqListDestory(SL *ps)

2021-05-25 19:41:31 2670

原创 leetcode刷题day3

本题来源于189. 旋转数组题目如下:给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。进阶:尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。你可以使用空间复杂度为 O(1) 的 原地 算法解决这个问题吗?示例 1:输入: nums = [1,2,3,4,5,6,7], k = 3输出: [5,6,7,1,2,3,4]解释:向右旋转 1 步: [7,1,2,3,4,5,6]向右旋转 2 步: [6,7,1,2,3,4,5]向右旋转 3 步: [5,

2021-05-24 22:56:10 130 1

原创 leetcode刷题day2

本题来源于 面试题 17.04. 消失的数字题目如下:数组nums包含从0到n的所有整数,但其中缺了一个。请编写代码找出那个缺失的整数。你有办法在O(n)时间内完成吗?注意:本题相对书上原题稍作改动示例 1:输入:[3,0,1]输出:2示例 2:输入:[9,6,4,2,3,5,7,0,1]输出:8思路此题有两种比较优的方法做,第一种方法首先是用等差数列求和公式算出0 – n前n+1项的和,之后减去数组的和,得到的就是少掉的数字。而第二种方法用到了异或,我们先把0到n异或一遍之后再

2021-05-23 09:51:35 198

原创 leetcode刷题day1

此题来源于剑指offer 56 - 1.数组中数字出现的次数题目如下:一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。示例 1:输入:nums = [4,1,4,6]输出:[1,6] 或 [6,1]示例 2:输入:nums = [1,2,10,4,1,4,3,3]输出:[2,10] 或 [10,2]限制:2 <= nums.length <= 10000思路:这道题我用的是

2021-05-22 10:07:11 115 2

原创 strlen()函数的模拟实现

在c语言中,strlen()函数储存在string.h头文件中,作用是计算一个字符串的字符数。实际上,这个函数内部运行中检测到\0则停止运行,之后返回字符数。下面我们通过三种方法模拟实现该函数的功能。1.计数器法代码如下#include <stdio.h>int myStrlen(char *p){ int count = 0; //开始假设字符串中字符数为0 while (*p != '\0') { count++; //p解应用得到的不是

2021-05-07 18:57:47 158

原创 c语言实现简易版扫雷

这个小项目源自两个月前学数组的时候,由于觉得比较重要,想记录一下。首先,大概的思路是要做出两个二维数组充当棋盘,一个用于后台储存雷的情况,一个用于打印给玩家玩游戏那么第一步我们知道,需要声明两个二维数组,一个打印出来给用户看,一个自己深埋在心里。第二步应该是要埋雷,这里我们可以定义几个数值去让玩家选择埋雷的数量。第三步也就是最难的扫雷部分了,我的思路是,首先玩家先输入一个坐标,我们再对玩家输入的坐标找到对应藏雷的数组,若此坐标就是雷,则反馈玩家游戏结束,若不是雷,则计算周围九宫格的雷数,并以数字的形

2021-05-06 17:37:13 371

原创 c语言指针学习初步

指针,英文名pointer,从名字看出指针大概是指向什么东西。在计算机科学中,指针(pointer)是编程语言中的一个对象,利用地址,它的值直接指向(points to)存在电脑存储器中的另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。因此,讲地址形象化的称为"指针"。意思是通过它能找到以它为地址的内存单元。我们可以提取出来:指针是用来存放地址的,指针大小在32位平台上占4个字节,在64位平台上占8个字节,因为地址是由地址线产生的,在32位平台上有32条地址线产生32个1

2021-05-05 22:11:18 325 2

空空如也

空空如也

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

TA关注的人

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