自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 深入理解TCP的三次握手和四次挥手

TCP建立连接的过程叫作握手,握手需要在客户和服务器之间交换三个TCP报文现在A是客户端,B是服务器端,最初两端都处于状态,假设A主动打开连接,B被动打开连接。一开始B服务器端先创建(调用listen)后进入LISTEN状态,等待A客户端的连接请求。A的客户端也是首先创建传输控制块TCB,此时A客户端打算建立TCP连接(调用connect),向B服务器端发送了一个请求连接报文段(即),同时初始序号,而该报文不能携带任何数据,这时,A客户端进入状态。

2023-09-10 13:11:23 559 5

原创 C++入门必备基础知识(下篇)

C++入门必备基础知识(上篇)目录1、内联函数2、auto关键字 3、范围for4、指针空值nullptr用inline修饰的函数叫做内联函数,C++编译器在编译时会在调用内联函数的地方展开,没有函数压栈的开销,从而提升程序运行的效率。auto介绍 auto使用场景 auto不能推导的场景for循环后的括号由冒号“ :”分为两部分,第一部分是范围内用于迭代的变量,第二部分则表示被迭代的范围。注意:与普通循环类似,可以用continue来结束本次循环,也可以用break来跳出整个循环范围for的使用条件在良

2022-08-24 09:50:44 315 7

原创 C++入门必备基础知识(上篇)

干货内容,不容错过

2022-08-21 09:59:18 601 2

原创 linux基础指令(下)

其实我们所用的指令本质上是可执行程序,和我们Windows桌面上的APP图标一样。我们也可以将管道和输出重定向与grep结合使用,将你想搜索的内容写入新的文件中。-f :使用档名,请留意,在 f 之后要立即接档名喔!上面演示的是解压到当前路径,要解压到指定路径还要加-d和路径名。-1 : 显示当前月(不加也行,直接cal是同样的效果)-3 : 显示系统前一个月,当前月,下一个月的日历。grep -i : 忽略大小写的不同,视为一样的。-v : 反向选择,显示出与你想搜索的相反的内容。......

2022-08-17 20:45:03 505 6

原创 linux基础指令(上)

cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息。那么它的文件种类无非就两种:目录和文件或者空目录,其中目录中可以有其它目录或者文件,而文件下不能有目录或者其它文件。cp -f : 强行复制文件或目录, 不论目的文件或目录是否已经存在。ls -a :列出目录下的所有文件,包括以.开头的隐含文件。...

2022-08-08 20:48:54 513 6

原创 设计循环队列

力扣题目链接: 设计循环队列 队列不熟的,可以看看我之前写的博客队列的实现 代码实现完整代码

2022-07-08 15:37:30 224 6

原创 【C语言】栈和队列的相互实现

用队列实现栈代码实现完整代码用栈实现队列 代码实现完整代码力扣链接:用队列实现栈这个题目,使用队列模拟实现栈,我们是使用C语言来实现,由于C语言没有相应的库所以我们要先手写一个队列出来,在此之前我们还要对队列和栈的性质有所了解 ,可以参考我之前写的文章——(队列的模拟实现)和(栈的模拟实现) 创建两个队列初始化 入栈出栈 获取栈顶元素判空 销毁栈完整代码用栈实现队列力扣链接:用栈实现队列这个题目是用栈实现队列,我们依然使用C语言

2022-07-01 14:24:53 841 4

原创 【C语言】队列的实现

队列的概念和结构 队列的模拟实现:用代码定义队列的结构队列基本功能的实现 初始化队列队尾入数据对头出数据获取对列对头元素获取队列对尾元素判空获取队列中有效元素的个数销毁队列完整代码头文件源文件队列的概念:队列只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列中的数据结构遵循先进先出FIFO(First In First Out)或后进后出的原则。入队列:进行插入操作的一端称为队尾出队列:进行删除操作的一端称为队头队列的结构:要实现队列无非也是现在我们学的两种结构:数组和链式结构。但是用

2022-06-28 15:41:42 2685 3

原创 【C语言】栈的实现

栈的概念:栈是一种特殊的线性表,其只允许在固定的一端进行插入和删除元素,进行数据的插入和删除的一端称为栈顶,另一端称为栈底,栈中的数据元素遵循后进先出(LIFO)或者先进后出的原则。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈,出数据也在栈顶。 栈的结构:要实现栈无非就两种结构:数组和链表。但是用数组来实现栈是更好的,因为栈是在栈顶进行插入删除的,而顺序表的尾插和尾删效率是非常高的,并且CPU高速缓存利用率也高。实现栈的基本功能 栈的初始化这

2022-06-24 22:03:43 1602 6

原创 双向带头循环链表之重拳出击

一、 链表的8种结构二、 双向带头循环链表的实现结构的创建和初始化 申请结点初始化尾插打印头插尾删 头删判空 链表长度 在pos位置之前插入结点删除pos位置的结点三、完整代码 总结 双向带头循环链表的结构是这样的:好让我们上手写一下。 首先我们写一下我们所需要的头文件其次我们在创建它的结构时要有一个前驱指针,还要有一个后继指针 结构创建好了,那就实现功能了。需要实现一下几个基本功能 申请结点初始化初始化的话有两种方法可以用方法一:二级指针 方法二:用结构体指针作为返

2022-06-23 17:21:56 445 12

原创 【算法专题】环形链表

题目链接:力扣题目链接:力扣

2022-05-29 09:29:36 245 10

原创 单链表的基本实现

前言上一篇文章中我们学习了顺序表​​​​​​【数据结构】——顺序表的基本实现_爱偷懒的猫(๑>؂<๑)的博客-CSDN博客顺序表是用数组实现的,优势是:物理空间连续并且支持下标随机访问劣势是:1、空间不够,需要扩容。但是扩容有一定的性能消耗,其次一般扩容2倍,存在一些空间浪费。​​​​​2、头部和中间位置插入删除效率低下链表正好可以解决这些劣势文章目录一、单链表的的概念和结构二、单链表的接口实现三、完整代码一、单链表的概念和结构概念:链表是一..

2022-05-20 22:37:36 429 22

原创 【数据结构】——顺序表的基本实现

这么清晰的顺序表,快来看看

2022-05-14 17:05:20 777 19

原创 【LeetCode】相交链表——面试经典题目

题目链接:力扣首先先声明一下这里的相交可不是如下图一样的相交这样相交是错误的,一个节点的指针域是不可能同时存放两份地址的。这样的相交才是正确的思路:根据题目意思,我们要的是相交的起始节点,那么我们可以先遍历两个链表,得到这两个链表的长度,再用较长的链表减去较短的链表,得到一个差值(后面我就用gap来代替这个差值了),再让较长的链表先走gap步,走完后,较短的链表和较长的链表同时向后走,直到走到他们的下一个节点相等时停止,这一个节点就是它们的相交节点。画图演示如下:..

2022-05-11 20:37:49 351 11

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

前言指针、结构体和动态内存管理是后面学习数据结构的基础。正所谓基础不牢,地动山摇,还不快来跟着我的脚步一起学习。目录一、为什么存在动态内存分配二、动态内存函数介绍三、常见的动态内存函数的错误1、为什么存在动态内存管理我们已经掌握的内存开辟方式有:int a=10;//在栈空间开辟四个字节int arr[10]={0};//在栈空间上开辟10个字节连续存放的空间上述的开辟空间的方式有两个特点: 1. 空间开辟大小是固定的。 2. 数组在申明的时候,必须指定数组...

2022-05-09 20:20:08 1099 13

原创 【LeetCode】反转一个链表

题目链接:力扣方法一:头插这是比较容易想到的一个方法。

2022-05-07 17:45:52 451 20

原创 手把手教你写通讯录【C语言版】

欢迎光临各位大帅哥,大美女如果觉得文章对自己有帮助可以一键三连支持博主哦你们的支持都是我坚持的动力前言建议:我们可以分模块,我这里就分了三个模块,test.c用于专门测试通讯录功能,contact.c和contact.h用于接口的实现和接口的声明一个简单的通讯录可以用来:存储1000个人的信息每个人的基本信息主要是:姓名、电话、年龄、地址、性别……如果你想要添加别的信息也可以。通讯录功能:1、添加联系人2、查找联系人3、删除联系人..

2022-05-05 15:50:55 11253 7

原创 【自定义类型详解】(枚举、联合)

目录:一、枚举枚举类型的定义 枚举的优点 枚举的使用二、联合(共同体)联合类型的定义 联合的特点 联合大小的计算1.枚举枚举顾名思义就是一一列举。把可能的取值一一列举。比如我们现实生活中:一周的星期一到星期日是有限的7天,可以一一列举。一个月有12个月,也可以一一列举。这里我们就可以使用枚举了。1.1 枚举类型的定义enum Day//星期的枚举{Mon,Tues,Wed,Thur,Fri,Sat,Sun};enum Color/..

2022-05-02 10:52:59 149 10

原创 【LeetCode】移除链表元素

再让cur往后走,没碰到val值就把cur赋给prev,碰到val值就把prev->next=cur->next之后再free(cur),然后再将cur=prev->next继续往后走。还有一个问题,当cur=head时,要把head=NULL,不然会有野指针问题。同样的我在这里定义的一个tail用于找尾,还有一个cur用来遍历原链表。在思路二的基础上加一个哨兵位的头结点,哨兵位的头结点就是不存储有效数据。遍历原链表,把不是val的节点拿出来尾插到新链表,最后返回新链表的头。好了,今天就分享到这里。

2022-04-30 18:25:17 526 5

原创 【自定义类型详解】(结构体、位段)

文章目录一、结构体结构体类型的声明 结构的自引用 结构变量的定义和初始化 结构体内存对齐 结构体传参 结构体实现位段(位段的填充&可移植性)二、枚举枚举类型的定义 枚举的优点 枚举的使用三、联合联合类型的定义 联合的特点 联合大小的计算前言本章干货满满,仔细看噢!!!一、结构体1.1 结构体的声明定义:结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。例如:描述一个学生typedef ...

2022-04-18 12:15:27 749 3

原创 初识结构体

本文目录结构体类型的声明 结构体初始化 结构体成员访问 结构体传参 一、结构体的声明1.1 结构体的基础知识结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量1.2 结构体的声明例如:描述一个学生typedef struct Stu{char name[20];//名字int age;//年龄char sex[5];//性别char id[20];//学号}Stu;//分号不能丢//typedef是类型重定义/重命名1.3 结.

2022-04-03 14:59:41 95 1

原创 内存操作函数

内存操作函数——memcpy、memmove、memset、memcmp1、内存操作函数1.1 memcpyvoid *memcpy( void *dest, const void *src, size_t count );count是字节数头文件<string.h>函数memcpy从source的位置开始向后复制num个字节的数据到destination的内存位置。 这个函数在遇到 '\0' 的时候并不会停下来。 如果source和destination有...

2022-03-30 23:03:02 918

原创 字符串函数

本文重点重点介绍处理字符串+内存管理的库函数的使用和注意事项求字符串长度 ——strlen 长度不受限制的字符串函数 ——strcpy、strcat、strcmp 长度受限制的字符串函数介绍——strncpy、strncat、strncmp 字符串查找——strstr、strtok 错误信息报告——strerror 字符操作 内存操作函数——memcpy、memmove、memset、memcmp前言C语言中对字符和字符串的处理很是频繁,但是C语言本身是没有字符串类型的,字符串通常

2022-03-30 22:32:11 3452

原创 深入了解指针

文章目录1、字符指针2、数组指针3、指针数组4、数组传参和指针传参5、函数指针6、函数指针数组7、指向函数指针数组的指针8、回调函数1、字符指针在指针的类型中我们知道有一种指针类型为字符指针char*一般使用:#include <stdio.h>int main(){char ch='w';char* pc=&ch;*pc='w';return 0;}还有一种使用方式如下:#include <stdio

2022-03-23 23:20:29 672 1

原创 冒泡排序升级版——什么类型数据都可排

#include <stdio.h>#include <stdlib.h>int cmp_int(const void* e1, const void* e2){ return (*(int*)e1 - *(int*)e2);}void Swap(char* b1,char* b2,int w){ int i = 0; for (i = 0; i < w; i++) { char tmp = *b1; *b1 = *b2; *b2 = tmp..

2022-03-13 18:20:43 350

原创 初步认识指针

指针变量,用来存放地址的变量。(存放在指针中的值都被当成地址处理)。

2022-03-12 23:05:53 525

原创 浮点型在内存中的存储

浮点数的家族中有:float、double、long double类型。浮点数表示的范围:在float.h中定义。float.h定义了浮点数的取值范围的相关信息。limits.h定义了整形数的取值范围的相关信息。截图只有一部分,可以去编译器里自行查看。为了更好的了解浮点型在内存中的存储,下面有一个例子帮助理解。#include <stdio.h>int main(){ int n = 9; float* pfloat = (float*)&n;.

2022-03-05 11:09:09 73 1

原创 数据存放在内存中以补码存放的原因

计算机在存储中有三种表现形式:原码、反码、补码。反码是原码和补码相互转换时的临时过渡,没有什么太大的用处。在计算机系统中数值一律用补码的形式来表示和存储。原因是:使用补码时,可以将符号位和数值位统一处理;同时加法和减法也可以统一处理(CPU只有加法器)此外,补码与原码相互转换,其运算结果是相同的,不需要额外的硬件电路。可以看如下解释更清楚...

2022-02-26 11:56:31 1690 1

原创 【静态库(.lib)设置】——让你写的函数给别人使用却让别人看不见你写的内容。

这就需要你建立静态库了,如图你写了个减法函数这里创建了一个sub.h和sub.c文件然后打开项目属性,找到常规属性,然后再找到配置类型,把应用程序(.exe)改成静态库(.lib)点击应用再点击确认。弄好后在点击调试下面就会出现。(lib)文件最后在你的Debug文件中找到有(.lib)的文件,将你的(.h)和(.lib)文件一起复制给别人这就是效果,这里的#pragma comment(lib,"project13.lib")的意思是导入静态库。注意要引用头文件#i...

2022-01-21 11:15:28 706

原创 【C语言】编写电脑关机程序

这个代码非常有意思,可以去试一下。

2022-01-17 10:27:18 944

原创 C语言学习

我是一名大一的学生,专业是计算机,我的目标是成为一名优秀的程序员我打算每周花费五天的时间学习编程,我最想进的公司是华为和腾讯

2022-01-10 14:33:03 283

原创 C语言设置密码

#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<string.h>void print(const char* pa){int i=0,ret;for(i=0;i<3;i++){printf(“请输入密码:>”);scanf("%s", pa);ret = strcmp(pa, “huangjiaxin”);if (ret == 0) {printf(“密码正确!\n”);br

2021-12-22 17:01:49 4249 3

空空如也

空空如也

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

TA关注的人

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