自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【C++】引用与指针

引用1、什么是引用引用是一种取名机制。int num = 10;int& number = num;number <=> num2、引用有哪些用处1、跨函数共享变量(获取函数的执行结果)2、提高传参数效率(不需要任何的内存拷贝)3、使用引用有哪些约束1、引用必须初始化2、引用不更换目标3、当为了提高传参效率使用引用时,也需要 const。4、引用常量时必须加 constconst int& num = 5;5、引用临时数据,但必须加 constco

2021-11-03 11:45:30 291 1

原创 【C++】C语言的malloc/free和C++的new/delete的异同

C++的堆内存管理1、C++中专门管理堆内存的语句,而C语言中只能使用标准库的函数来管理堆内存。new 分配内存,相当于C语言中的mallocdelete 释放内存,相当于C语言中的free2、new和delete的使用方法类型* p = new 类型; // 分配一块内存注意:new会自动计算字节数,且返回的是有类型的地址。delete p; // 释放内存类型* p = new 类型[n]; // 分配n块连续的内存delete[] p; // 释放n块连续的内存注意:new/del

2021-10-11 20:12:17 320

原创 【C++】C与C++数据类型的区别

C++与C的区别:1、C++完全兼容C语言2、支持面向对象的编程思想3、支持运算符、函数重载4、支持编译时、运行时多态5、支持泛型编程(模板)6、支持异常处理7、类型检查更严格C++和C数据类型的不同1、结构的不同1、不再需要 typedef 关键字对结构进行重定义,设计好结构后,定义结构变量时不再需要struct关键字。2、结构体的成员可以是函数,在成员函数中可以直接访问成员变量,不需要.或->。3、结构体中有一些隐藏的成员函数(构造、析构、拷贝、赋值)。4、可以给成员设置

2021-10-07 20:03:37 632

原创 【计算机网络】线程池

生产者与消费者模型:生产者:生产数据的线程消费者:使用、处理数据的线程缓冲区:隔离生产者和消费者,这样可以避免互相等待,提高运行效率。生产者快于消费者:缓冲区爆满 撑死消费者快于生产者:缓冲区一直空 饿死使用条件变量可以解决生产者与消费之间的效率不匹配问题。生产者快于消费者,通知消费者加速消费,生产者睡眠降低生产速度。消费者快于生产者,通知生产者加速生产,消费者睡眠降低消费速度。线程池由于TCP是面向连接的协议,需要一对一通信,需要为每个客户端进行服务,之前是为每客户端创建一个进程来服务

2021-09-26 19:48:52 106

原创 【计算机网络】TCP通信服务端的多线程实现

线程介绍:线程就是进程中负责执行的部分,是进程内部的控制序列,它是轻量级的,没有自己独立的代码段(txt)、数据段(静态数据bss、全局数据段data)、堆区(heap)、环境变量、命令行参数、文件描述符、信号处理函数、当前工作目录。线程拥有独立的栈内存,也就是它自己独立的局部变量。一个进程中至少有一个线程,我们把它叫作主线程,也可以再创建多个线程。注意:进程是个资源单位,而线程是个执行单例,线程是进程的一部分,进程中正是有了线程才能动起来。POSIX线程:1、早期各计算机厂商自己提供私有的线程

2021-09-21 23:19:25 853

原创 【计算机网络】网络通信模型及其Linux下代码实现TCP&UDP

网络通信:所谓网络通信,就是底层遵循TCP/IP协议,而在系统层以Socket接口方式呈现。基于TCP协议的网络通信模型: 服务端 客户端 创建socket对象 创建socket对象 准备通信地址+端口号(本机) sockaddr_in 准备通信地址+端口号(目标) 绑定socket和通信地址 bind 连接服务端 conncet 设置监听

2021-09-20 16:28:43 705 1

原创 【计算机网络】网络编程前置-udp&tcp/ip

一、计算机网络基础知识1.什么是计算机网络 *****  把分布在不同地理位置的计算机与专门的网络设备用通信线路互相连成一个规模大、功能强的系统,从而使众多计算机可以方便地互相传递信息、共享软件、硬件、数据信息等。  计算机网络就是由通信线路互相连接的许多自主工作的计算机构成的的集合,它是计算机技术和通信技术相结合的产物。  2.计算机网络的功能 *****  数据通信、资源共享、提高系统的可靠性、分布式网络处理和负载均衡。3.计算机网络的组成1.通信子网网卡:网络接口卡或网络适配器、它负

2021-09-08 10:48:44 168

原创 【c语言小项目】学生成绩管理系统

设计要求:此项目没有商业价值,练习学习过的知识点。仅限于C语言知识。学生:姓名 性别 学号 密码 语文 数学 英语1、第一次登录强制修改密码。2、查询成绩排名 不显示姓名和学号。平均分最高分 所有学生单科和总分最低分3、修改密码4、查看个人信息5、三次密码错误锁定帐号,由教师解锁教师:姓名 性别 工号 密码1、第一次登录强制修改密码。2、添加学生(学生的学号自动生成)单个添加从文件批量导入3、删除学生输入两次学号确定删除的学生要记录保存在已退学的文件中4、查找学

2021-09-05 20:22:15 428

原创 【数据结构与算法】十大排序算法及其C语言代码(冒泡,选择,插入,希尔,堆,快速,归并,计数,基数,桶)

排序算法:排序算法的稳定性:当待排序的数据中有相同的数据,排序算法是否会更改它们的前后关系,不会更改的叫稳定排序,可能会更改的叫不稳定排序。冒泡:特点:对数据的有序性敏感是否稳定:稳定时间复杂度:O(n) O(n^2)空间复杂度:O(1)void bubble_sort(int* arr,size_t len){ bool flag = true; for(int i=len-1; i>0 && flag; i--) { flag = false; fo

2021-08-31 17:07:22 329

原创 【数据结构与算法】算法的特性以及查找算法(顺序,二分,哈希,块)

什么是算法:广义:解决特定问题的方法。狭义:数据结构具备的功能。算法的特征:有穷性、确切性、输入项、输出项、可行性算法的评定:正确性、时间复杂度、空间复杂度、可读性、健壮性时间复杂度:一个用于描述算法在执行时,随着输入参数数量的变化,而执次数发生变化的函数。一般采用大O表示法:O(函数)常见的时间杂度:常数阶 O(1)对数阶 O(logn)线性阶 O(n)线性对数阶 O(nlogn)平方阶 O(n?)指数阶 O(2^n)空间复杂度:一个用于描述算法在执行时,随着输入参数数

2021-08-19 19:33:17 243

原创 【数据结构与算法】十字链表的图的功能实现

为了解决用邻接表存储入度计算复杂的问题,由邻接表升级为十字链表,保存了顶点的出度和入度情况。#include <stdio.h>#include <stdlib.h>#include <stdbool.h>#include <string.h>//边typedef struct Edge{ int in; int out; struct Edge* in_next; struct Edge* out_next; //void* inf

2021-08-19 18:47:55 118

原创 【数据结构与算法】链式栈的功能实现

#ifndef STACK_LIST_H#define STACK_LIST_H#include <stdio.h>#include <stdlib.h>#include <stdbool.h>typedef struct Node{ void* data; struct Node* next;}Node;typedef struct StackList{ Node* top; size_t cnt;}StackList;// 创建结点

2021-08-18 19:21:22 65

原创 【数据结构与算法】链式队列的功能实现

#ifndef QUEUE_LIST_H#define QUEUE_LIST_H#include <stdio.h>#include <stdlib.h>#include <stdbool.h>typedef struct Node{ void* data; struct Node* next;}Node;//创建节点Node* create_node(void* data);typedef struct QueueList{ Node*

2021-08-18 19:17:48 67

原创 【数据结构与算法】用图的邻接表来遍历

#include <stdio.h>#include <stdlib.h>#include <stdbool.h>#include <string.h>typedef struct Edge{ int index; struct Edge* next;}Edge;Edge* create_edge(int index){ Edge* edge = malloc(sizeof(Edge)); edge->index = inde

2021-08-09 20:35:55 83

原创 【数据结构与算法】用图的邻接矩阵来遍历

#include <stdio.h>#include <stdlib.h>#include <stdbool.h>#include <string.h>typedef struct Graph{ char* vertex; char* edge; size_t vexnum;}Graph;Graph* create_graph(char* str){ // 申请图所需要的存储空间 Graph* graph = malloc(si

2021-08-09 20:34:55 97

原创 【数据结构与算法】关于图的那些概念和存储

文章目录图一、图的相关术语:二、有向图与无向图1.无向图2.有向图3.举个栗子三、图的存储1.邻接矩阵2.邻接表3.十字链表四.图的遍历图 图结构:任意两个数据元素之间都可能存在关系,可以是多对多的关系。一、图的相关术语:顶点:在图型结构中,数据元素被称为顶点。弧:从顶点V1出发,可以到达顶点V2,这种关系被称为弧,用<V1,V2>表示,V1被称为弧尾,V2被称为弧头,这种图被称为有向图。边:从顶点V1可以到达顶点V2,顶点V2可以到达顶点V1,这种关系被称为..

2021-08-09 20:28:20 213

原创 【数据结构与算法】平衡二叉查找树的功能实现

#include <stdio.h>#include <stdlib.h>#include <stdbool.h>typedef struct TreeNode{ int data; struct TreeNode* left; struct TreeNode* right; int hight;}TreeNode;TreeNode* create_node(int data){ TreeNode* node = malloc(sizeof(T

2021-08-06 19:17:52 75

原创 【数据结构与算法】堆二叉树的功能实现

#include <stdio.h>#include <stdlib.h>#include <stdbool.h>#include <string.h>#include <time.h>//do~while为了使替换语句使用时不加分号会报错#define swap(a,b) do{typeof(a) t=a; a=b; b=t;}while(0)typedef struct Heap{ int* arr; size_t cal

2021-08-05 20:39:43 56

原创 【数据结构与算法】有序二叉树(左<根<=右)的功能实现

#include <stdio.h>#include <stdlib.h>#include <stdbool.h>//创建结构体typedef struct TreeNode{ int data; struct TreeNode* left; struct TreeNode* right;}TreeNode;//创建树结点TreeNode* create_node(int data){ TreeNode* node = malloc(sizeof

2021-08-04 18:56:33 89

原创 【数据结构与算法】二叉树的顺序存储

#include <stdio.h>#include <stdlib.h>#include <stdbool.h>#include <string.h>#include <math.h>//创建结构体typedef struct TreeArray{ char* arr; size_t cal;}TreeArray;//创建TreeArray* create_tree(char* level_str){ TreeArra

2021-08-03 20:19:43 110

原创 【数据结构与算法】链式结构的二叉树,通过前序和中序来创建树

#include <stdio.h>#include <stdlib.h>#include <stdbool.h>#include "queue.h"//构造树结点typedef struct TreeNode{ char data; struct TreeNode* left; struct TreeNode* right;}TreeNode;//创建结点TreeNode* create_tree_node(char data){ TreeN

2021-08-02 19:07:40 67

原创 【数据结构与算法】双向通用链表的功能实现

.h文件#ifndef LIST_H#define LIST_H#include <stdio.h>#include <stdbool.h>#define swap(a,b) {typeof(a) t=a; a=b; b=t;}typedef struct Node{ void* data; struct Node* prev; struct Node* next;}Node;typedef struct List{ Node* head; siz

2021-07-30 09:04:45 97

原创 【数据结构与算法】用带头节点的方式来实现链表功能

在链表初创之时,并没有自建一个无意义的头结点,但随着发现创建了“无意义”的头结点之后整个代码简谐了,但在应试中大家还是要求自主实现不带头结点的链表功能。可以对比下有头结点和无头结点代码的美观性和可读性,附上无头结点的代码:https://blog.csdn.net/weixin_54057383/article/details/119151365#include <stdio.h>#include <stdlib.h>#include <stdbool.h>#

2021-07-28 19:39:14 86

原创 【数据结构与算法】用二级指针实现链表的功能

#include <stdio.h>#include <stdlib.h>#include <stdbool.h>#define TYPE inttypedef struct Node{ TYPE data;//数据域 struct Node* next;//指针域}Node;//创建结点Node* create_node(TYPE data){ Node* node = malloc(sizeof(Node)); node->data

2021-07-27 19:23:57 186

原创 指针与常量

常量指针指针常量常量指针常量这三胞胎如何去区分呢?1.常量指针形如:const 类型* 指针=&变量const 类型 *指针=&变量常量是形容词,指针是名词,以指针为中心的一个偏正结构短语。即这是一个常量修饰的指针。常量保护指针指向的变量,即无法通过该指针来改变变量的值,也就意味着可以通过其他途径来修改该变量,但指针的指向是可以改变的。例如给变量赋值,例如重新定义另一个不保护变量的指针来指向该变量,即可通过另一个指针解引用来改变该变量了。举个栗子,吃了消化一下//一枝独

2021-07-21 20:57:30 116

转载 为什么浮点数小数点后仅六位有效?

详情请自行移步IEEE754标准中,这里仅抛砖引玉浅谈下。在IEEE754标准中进行了单精度浮点数(float)和双精度数浮点数(double)的定义。float有32bit(4个字节),double有64bit(8个字节)。它们的构成包括符号位、指数位和尾数位。这些位的构成如下:种类-------符号位-------------指数位----------------尾数位----float----第31位(占1bit)----第30-23位(占8bit)----第22-0位(占23bit)dou

2021-07-20 15:12:25 3589 1

原创 【c语言第一个项目】通讯录实现&优化

项目要求:通讯录:电话 姓名 级别以二维数据存储:char tle[100][12]char name[100][10]char level[100]存储上下为100人,电话11位,姓名一个中文三位(Linux下),级别用于表示重要程度,也可作为判断标志实现功能如下:1.添加联系人2.删除联系人3.模糊查找联系人4.修改联系人5.显示全部联系人6.退出在没学结构体和文件读写前:tool.cint get_cmd(char start,char end){ puts("

2021-07-16 14:32:49 139

原创 【c语言】复习无止境,day5--头文件&结构体&文件读写篇【end】

头文件中应该写什么:面临的问题:头文件可能被任何源文件包含,意味着头文件中的内容会在多个目标文件中存在,合并不能冲突重点:头文件中只能编写声明语句,不能有定义语句全局变量的声明 extern函数的声明宏常量宏函数typedef 类型重定义结构、联合、枚举的类型的声明头文件的编写规则:1、为每个.c文件写一份.h文件,因为.h文件是对.c文件的说明2、如果需要用到某个.c文件中的变量、函数、宏,只需要把它的头文件导入即可。3、.c文件也要导入它的.h 目的是为了让声明与定义一致头文

2021-07-12 18:52:38 513 1

原创 【c语言】复习无止境,day4--堆内存&宏函数篇

内存

2021-07-10 19:30:43 93

原创 【c语言】复习无止境,day3--指针篇

单位

2021-07-10 10:35:55 122

原创 【c语言】复习无止境,day2--数组&函数篇

数组:什么是数组: 变量的组合,是一种批量定义变量的方式定义: 类型 数组名[数量];int num1,num2,num3,num4,num5;int arr[5];使用:数组名[下标];下标:从零开始 范围:0~数量-1遍历:与for循环配合使用,使用循环变量i作为数组的下标初始化: 类型 数组名[数量] = {1,2,3,4,5,…};1、数组与普通变量一样默认值是随机的,为了安全要对数组进行初始化2、这种初始化语法只能在定义语句时使用,而且只能逐个赋值,不能整体赋值3、

2021-07-07 19:05:21 475

原创 【c语言】复习无止境,day1--linux&c语言类型运算符流程语句篇

Linux系统介绍:BCPL->newB->C->UNIX->Minix->Linux->gccLinux管理硬盘的能力非常强大,所以我们看到只有一分区/ 根目录,全部文件读存储在它下面bin 存储系统命令文件media 多媒体目录,u盘、光盘、挂载的目录home 用户主目录,自动生成同用户名的用户主目录usr 存储头文件/ 根目录.. 上一级目录. 当前目录~ 用户主目录注意:Linux的目录结构是呈倒悬树,目

2021-07-06 20:11:50 156

空空如也

空空如也

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

TA关注的人

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