自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 A V L树

AVL树的插入,插入旋转详解

2023-01-14 15:42:49 456 1

原创 搜索二叉树及其实现(迭代和递归实现)

二叉搜索树的迭代和递归实现

2023-01-01 15:20:22 576

原创 C++中的多态(原理篇)

C++多态原理,单继承与多继承中虚函数表的打印

2022-12-31 10:23:43 492

原创 C++中的多态(概念篇)

C++中的多态(概念)

2022-12-27 16:05:52 543

原创 C++中的继承

C++中的继承,菱形继承以及虚拟继承

2022-12-24 11:15:19 496

原创 进程的状态以及进程的优先级

进程的状态进程的优先级进程优先级的修改

2022-11-01 15:16:49 262

原创 程序地址空间

程序地址空间进程地址空间页表 MMU写时拷贝

2022-10-26 15:41:07 392

原创 进程的概念

进程的查看PCB的内部构成xitp上下文数据的理解通过系统调用创建进程-fork() #include

2022-10-25 16:31:17 560

原创 priority_queue以及其模拟实现

优先级队列在默认情况下为大堆,也就是说默认情况下排出来的是一个降序。但是我们可以根据后面的最后一个参数来控制优先级。默认为less,当穿greater时为小堆。仿函数可以使对象像函数名一样拥有参数。这里涉及到一个仿函数的概念。

2022-10-24 19:41:22 239

原创 测试开发进阶

软件按照测试对象划分按是否查看代码划分按照开发阶段划分按照实施组织划分按照代码是否运行划分按照石否手工测试划分按照地域划分

2022-10-18 12:11:35 337

原创 测试开发用例

测试用例的设计方法等价类边界值错误猜测法场景法因果图法正交法

2022-10-15 17:30:39 385

原创 测试开发基础

软件测试的生命周期如何描述一个BugBug的级别Bug的生命周期如果因为Bug和开发人员产生冲突怎么办

2022-10-12 21:04:23 132

原创 测试开发概念

什么是需求什么是Bug软件开发的五大模型软件测试的两大模型

2022-10-12 20:25:38 154

原创 测试开发答疑

什么是软件测试?软件测试和软件开发的区别软件测试和软件开发当中的调试有什么区别一个优秀的软件测试人员所具备的素质

2022-10-12 15:58:19 165

原创 list的简单模拟实现

【代码】list的简单模拟实现。

2022-09-16 11:05:07 84

原创 vector的简单模拟实现

【代码】vector的简单模拟实现。

2022-09-16 11:03:14 87

原创 string的简单模拟实现

【代码】string的简单模拟实现。

2022-09-16 10:59:13 80

原创 Linux编译器-gcc/g++的使用

gcc/g++的使用

2022-07-30 21:43:20 330

原创 vim的使用

vim的使用以及配置

2022-07-27 12:47:37 258

原创 yum的使用

yum的使用

2022-07-25 12:10:38 249

原创 模板(初阶)

模板初识

2022-07-22 11:54:31 215

原创 Linux权限管理

linux权限 chmod chown chgrp 粘滞位 权限掩码

2022-07-16 22:11:31 246

原创 linux常见指令

ls pwd cd touch mkdir rm man cp mv cat more less head tail date find grep zip tar bc uname shutdown

2022-07-15 20:25:38 229

原创 日期类(详细接口)

日期类

2022-07-02 16:42:11 181

原创 类和对象(中)

任何一个类在我们不写的情况下,都会自动生成下面6个默认成员函数。构造函数是一种特殊的成员函数,名字与类名相同,创建类类型对象时由编译器自动调用,保证每个数据成员都有一个合适的初始值,并且再对象的生命周期内只调用一次。其主要任务不是开空间创建对象,而是初始化对象1、函数名与类名相同2、无返回值3、对象实例化时编译器自动调用对应的构造函数。4、构造函数可以重载。5、如果类中没有显式定义构造函数,则C++编译器会自动生成一个无参的默认构造函数,一旦用户显式定义编译器将不再生成。6、无参的构造函数和全缺

2022-06-27 12:01:04 113

原创 类和对象(上)

C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。C++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。在C语言中,我们的结构体中只能定义变量,但是在C++中,在结构体中不仅可以定义变量,也可以定义函数。比如我们定义一个学生的结构体,在C语言中我们叫做结构体,但是在C++之中我们就会将其称为类,以struct定义的类中也可定义函数类的定义类我们一般这样子定义class为定义类的关键字,ClassName为类的名字,{}中为类的主体,

2022-06-23 11:59:38 58

原创 extern“C“的应用

有时候在C++工程中可能需要将某些函数按照C的风格来编译,在函数前加extern “C”,意思是告诉编译器,将该函数按照C语言规则来编译。今天我们就用力扣的一道例题来介绍一下extern"C”在vs中的应用在写这道题的时候我们用到了一个数据结构栈,倘若我们需要调用的栈是用一个c语言写的库,但是我们的题目是用C++来写的,那么我们如何来调用C的数据结构呢?首先我们创建一个空项目,将我们的源代码以及头文件先导进去,我是创建了一个DSC的一个工程先将这两个文件导入,其次配置DSC文件的属性将配置类型

2022-06-14 22:43:34 235

原创 C++命名空间

在C/C++中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或名字 污染,namespace关键字的出现就是针对这种问题的。定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{}中即为命名空间的成员。嵌套使用同一个工程中是允许存在多个相同名称的命名空间的,只是编译器在最后会将其合并成为一个命名空间。注意一个命名空间就定义了一个新的作用

2022-06-06 17:46:23 150

原创 快速排序(详解)

快速排序是一种交换排序,交换就是根据序列中的两个记录键值的比较结果来兑换这两个记录在序列中的位置,交换排序的特点是:将键值较大的记录向序列的尾部移动,键值较小的记录向序列的前部移动。 快速排序是Hoare于1962年提出的一种二叉树结构的交换排序方法,其基本思想为:任取待排序元素序列中的某元素作为基准值,按照该排序码将待排序集合分割成两子序列,左子序列中所有元素均小于基准值,右子序列中所有元素均大于基准值,然后最左右子序列重复该过程,直到所有元素都排列在相应位置上为止。ho...

2022-05-28 01:40:54 1975

原创 排序(详解)

排序的概念**排序:**排序就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作**稳定性:**假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳定的;否则称为不稳定的。**内部排序:**数据元素全部放在内存中的排序。**外部排序:**数据元素太多不能同时存放在内存中,根据排序过程的要求不能在内存之间移动

2022-05-28 00:26:25 69

原创 栈和队列(详解)

栈的概念及其结构栈:是一种特殊的线性表,其只允许在固定的一端进行插入和删除元素的操作。进行数据插入和删除操作的一端称为栈顶,另外一端称为栈底。栈中的数据元素遵循先进后出(后进先出)的原则。压栈: 站的插入操作叫做进栈/压栈/入栈,入数据在栈顶出栈:栈的删除操作叫做出栈。出数据也在栈顶栈的实现站的实现一般可以使用链表或者数组实现,想对而言数组的结构实现更优一些,因为数组在尾上插入数据的代价比较小。栈的头文件#pragma once#define _CRT_SECURE_NO_WARNINGS

2022-05-02 10:38:45 948

原创 双向带头循环链表(详解)

双向链表的接口实现

2022-04-28 09:20:17 2269

原创 合并两个有序数组

合并两个有序数组给定两个有序数组nums1和nums2,将nums2合并到nums1中,是的nums1成为有序数组说明:1、初始化nums1和nums2的元素数量分别为m和n2、可以假设nums1有足够的空间(空间大小大于或等于n+m),来保存nums2中的元素。方法1:合并后排序时间复杂度: O((n+m)+log(n+m))空间复杂度: O(1)int cmp(int* a, int* b){ return *a - *b;}void merge(int* nums1, i

2022-04-15 18:45:48 66

原创 顺序表-数据结构(接口)

头文件#pragma once#include<stdio.h>#include<string.h>#include<stdlib.h>#include<assert.h>#define N 100typedef int SLDataType;typedef struct SeqList{ SLDataType* array; size_t size; size_t capicity;}SeqList;//顺序表的初始化vo

2022-04-15 17:11:28 57

原创 一篇文章理解C语言文件操作

1为什么使用文件?使用文件可以将数据直接存放在电脑的硬盘上,做到了数据的持久化存在。2什么是文件?磁盘上的文件是文件在程序设计中,一般文件分为程序文件和数据文件(是从文件功能的角度来分类的)3文件的打开和关闭1文件指针在C语言中每一个被使用的文件都在内存中开辟了一个相应的文件信息区,用来存放文件的相关信息。这些信息保存在一个结构体变量中,该结构体的类型是由系统声明的,为FILE。每当打开一个文件时候,系统会根据文件的情况自动创建一个FILE结构变量,并填充其中的信息,我们并不需要去关心其中的

2022-04-10 13:10:17 980

原创 通讯录(详解)

通讯录功能:1、保存1000个联系人的信息2、增加新的联系人3、删除联系人的信息4、修改联系人的信息5、查找一个联系人6、对联系人进行一个排序7、打印联系人信息联系人信息包含姓名 性别 年龄 电话 地址实现在这里实现通讯录用三个模块test.c--------------------测试通讯录的功能contact.h---------------通讯录的实现(接口的声明)contact.c---------------通讯录的实现(接口的实现)

2022-03-30 09:38:29 1303 2

原创 结构体(详解)

结构体结构体的内存对齐计算结构体的内存大小看下面的代码,#include<stdio.h>struct s1{ char a; int b; char c;};struct s2{ char a; char b; int c;};int main(){ printf("%d \n", sizeof(struct s1)); printf("%d \n", sizeof(struct s2)); return 0;}这里的s1,s2结构体里面均存放

2022-03-26 18:42:50 1053

原创 字符串分割函数 strtok 内存操作函数 memcpy memmove memset memcmp

字符串分割函数(strtok)strtok函数是用来分割字符串的,它的函数模型为char* strtok(char* str,const char* sep)sep参数是个字符串,里面存放的是用来分割str的分割符的字符集合。第一个参数指定一个字符串,它里面不包含或者包含多个由sep字符串中一个或者多个分隔符分割的标记strtok函数找到str中的下一个标记,并将其用 \0 结尾,返回一个指向这个标记的指针。(注: strtok函数会改变被操作的字符串,所以在使用strtok函数切分的

2022-03-24 10:26:49 366

原创 strstr函数的使用以及模拟

strstr(str1,str2)函数是用来判断字符串str2,是否为字符串str1的子串,若是子串,则返回第一次出现str2处的地址,若不存在子串,则返回一个空指针。#include<stdio.h>#include<assert.h>#include<string.h>int main(){ char arr1[] = "abbbcdef"; char arr2[] = "bbc"; char* ret = strstr(arr1, arr2);

2022-03-21 12:04:56 538

原创 strcat函数的使用以及模拟

strcat函数是用来追加字符串的它的返回类型为char*,返回的是目标字符串。strcat的使用int main(){ char arr1[20] = "asdfg"; char arr2[] = "zxcvb"; strcat(arr1, arr2); printf("%s", arr1); return 0;}运行结果是将arr2的字符串追加到arr1的后面,在这里有以下几点需要注意,1、源字符串必须以 '\0' 结束。(不然不知道追加到何时停止)2、目标

2022-03-21 11:41:12 375

空空如也

空空如也

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

TA关注的人

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