自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【快速排序】

(1):以 nums[left] 为基准元素将 nums[left : right] 划分成3段 nums[left: mid-1],nums[mid] 和 nums[mid+1:right],使得nums[left:mid-1] 中任何元素小于等于 nums[mid], nums[mid+1:right] 中任何元素大于等于 nums[right]。下标 mid 在划分过程中确定。(2)

2023-05-11 21:35:39 368 2

原创 一、Linux的复制与替换--printf函数输出问题、主函数参数介绍、fork进程

这里写目录标题3、复制进程 fork3、复制进程 fork总结:复制从 fork 执行结束开始,父进程中 fork 的返回值为子进程(pid)的 id 号,子进程的返回值为 0。在进程中打印的变量地址,都是逻辑地址,不是物理地址。子进程会复制父进程的内存空间。僵死进程: 子进程先于父进程结束,父进程没有获得子进程的退出码,子进程就变成僵死进程。...

2022-05-16 10:19:49 473 1

原创 C++(函数重载和函数模板)

重载和模板一、函数重载1、函数重载定义2、判断函数重载的规则2、名字粉碎(名字修饰)3、C++编译时函数名修饰约定规则:4、C++函数是重载二、函数模板一、函数重载1、函数重载定义  在C++中可以为两个或两个以上的函数提供相同的函数名称,只要参数类型不同,或参数类型相同而参数的个数不同, 称为函数重载。示例:// my_max + 参数表int my_max(int a,int b){ return a > b ? a : b;}char my_max(char a,char b

2022-05-15 20:48:07 1726 1

原创 C++(函数缺省)

函数缺省和重载  一般情况下,函数调用时的实参个数应与形参相同,但为了更方便地使用函数,C++也允许定义具有缺省参数的函数,这种函数调用时,实参个数可以与形参不相同。  定义:定义函数时为形参指定缺省值(默认值)。在调用缺省函数时,对于缺省参数,可以给出实参值,也可以不给,不给则按照默认缺省值使用。实例:#include<iostream.h>void delay(int loops = 5){ //延时函数,默认延时5个时间单位for (; loops > 0; l

2022-05-15 08:45:00 722

原创 C++(inline函数)

inline函数1、为什么需要inline 函数2、inline函数的使用3、inline函数的总结4、inline 函数的适用情况5、内联函数与宏定义的区别1、为什么需要inline 函数  当程序执行函数调用时,系统要建立栈空间,保护现场,传递参数以及控制程序执行的转移等等,这些工作需要系统时间和空间的开销。  当函数功能简单,使用频率很高,为了提高效率,直接将函数的代码嵌入到程序中。但这个办法有缺点,一是相同代码重复书写,二是程序可读性往往没有使用函数的好。  为了协调好效率和可读性之间的矛盾

2022-05-14 14:36:07 2390

原创 C++基础(引用)

引用(别名)1、引用的特点2、const引用3、引用作为形参代替指针4、其他引用形式5、指针和引用的区别1、引用的特点定义:类型 & 引用变量名称 = 变量名称& 和类型结合称为引用,不是取地址的符,代表别名的意思。int main(){ int a = 10; int b = a;//变量 int &c = a;//引用 return 0;}特点:引用必须初始化没有空引用没有引用的引用,所谓的二级引用举例:int main(){ int

2022-05-13 11:12:41 176

原创 1、C++基础(const和指针)

C++基础const 和指针1、const 在C和C++中的区别2、const和指针的关系3、常变量与指针4、同类型指针的赋值兼容规程const 和指针1、const 在C和C++中的区别C中以变量为主int main(){ const int n = 10;//C中以变量为主 int ar[n] = {1,2};//error int *p = (int*) &n; *p = 100; printf("%n = %d *p = %d \n",n,*p); return 0

2022-05-12 15:34:59 197 2

原创 Linux基础(3)

Linux基础7. 库文的生成和使用1. 什么是库文件?2. 静态库的生成和使用2.1 静态库的生成2.2 静态库的使用3. 共享库的生成和使用3.1 共享库的生成3.2 共享库的使用4. 静态库和共享库的区别7. 库文的生成和使用1. 什么是库文件?库是一组预先编译好的函数方法的集合Linux上库文件的存放的位置:/lib 和 /usr/lib库分为两种:静态库和共享库Linux上的静态库标识(libxxx.a),共享库(libxxx.so)  windows上静态库标识(.lib),共

2022-04-29 20:56:30 474

原创 Linux基础(2)

这里写目录标题6、进程管理命令6.1什么是进程6.2进程在内存中怎么管理?6.3进程查看命令6、进程管理命令6.1什么是进程程序:是完成特定任务的一系列数据+指令的集合(钢琴琴谱,在磁盘上)进程:正在执行的程序(根据琴谱弹奏的过程,运行在内存上)  进程(process):是计算机上一端程序的执行过程,是操作系统进行资源分配的基本单位,但是进程不仅仅是局限于一段可以执行的代码段,通常进程还需要包含其他资源,例如打开的文件,挂起的信息处理器的状态等。  简而言之,进程就是正在执行的程序代码的实

2022-04-20 15:17:02 1445

原创 字符串匹配

文章目录一、基础二、BF算法(暴力求解)1、第一种BF算法2、优缺点三、KMP算法一、基础字符串:“abcd”字串:真子串:" ",“a”,“b”,“c”,“d”,“ab”,“bc”,…不包括自身二、BF算法(暴力求解)1、第一种BF算法如果 i 和 j 指向的字符相等,则i++,j++2、优缺点优点:逻辑简单、实现也简单确定:效率很低,时间复杂度为O(n*m)三、KMP算法核心思想:i 不回退...

2022-04-04 13:48:26 212

原创 数据结构----归并排序、快速排序

归并排序、快速排序一、归并排序1、规则2、代码3、时间复杂度、空间复杂度、稳定性二、快速排序1、规则2、代码3、时间复杂度、空间复杂度、稳定性三、总结一、归并排序1、规则首先将所有的数据默认每个组,当所有的数1、将所有数据单独给每个数据每个组(每个数据单独看,就是有序的)原始数据:    84  9 18 19 48 12 90 84 90 12第一次两两合并: 9  84 18 19 12 48 84 90 12 902、代码3、时间复杂度、空间复杂度、稳定性时间复杂度:O(n*l

2022-04-02 20:27:04 900

原创 数据结构----选择排序、基数排序(桶排序)

选择排序、基数排序一、选择排序1、规则介绍2、代码及测试结果3、时间复杂度、空间复杂度、稳定性二、基数排序(桶排序)1、规则介绍2、代码及测试结果3、时间复杂度、空间复杂度、稳定性一、选择排序1、规则介绍    每一趟从待排序系列中找到最小值(下标)和待排序列的第一个值(下标),然后将两个交换,知道待排序列中只剩下一个值。(每一次都找一个最小值放到前面,len-1趟即可)。2、代码及测试结果void Show(int arr[], int len){ for (int i = 0; i &lt

2022-03-28 08:00:00 200

原创 图书管理系统

图书管理系统1、学生、图书信息的结构体设计(1)头文件(2)宏定义(3)结构体设计2、图书管理系统主菜单设置3、图书管理模块(1)显示图书信息A、显示书籍管理的主菜单B、文件读取图书C、显示图书信息(2)新增图书信息(3)查找图书信息(4)删除图书信息(5)修改图书信息A、显示修改选项的子菜单B、保存图书信息的函数C、修改图书(6)图书管理模块4、读者管理模块(1)显示读者信息A、显示读者管理的主菜单B、文件读取读者信息B、显示读者信息(2)新增读者信息(3)查找读者信息(4)删除读者信息(5)修改读者信息

2022-03-25 11:12:06 535

原创 Linux基础(1)

Linux基础一、Linux介绍1、Linux形成历史二、 Linux简介1、Linux和Window系统有什么区别?2、Linux 的内核版本和发行版本三、Linux目录结构1、Linux的文件目录结构图:2、常用目录介绍:一、Linux介绍1、Linux形成历史 Linux(类unix系统):多用户多任务的操作系统。 unix系统:贝尔实验室1969年开发,在unix7系统,发现unix的商业价值,就收回授权,最终在1982年发布第一个完全商业版本unix system 3。

2022-03-24 21:29:02 1288 1

原创 数据结构--冒泡排序

1、(1)冒泡排序:沉石排序,每一趟循环两两比较,大的向后挪动,最终最大值放在最后,假设有n个书数据,则需要跑n-1趟。代码:void BubbleSort(int* arr, int len){ for (int i = 0; i < len - 1l; i++) { for (int j = 0; j + 1 < len-i; j++)//比较的下一位j+1<每一趟的最后一位数(len-i) { if (arr[j] > arr[j + 1]).

2022-03-24 10:00:00 1600

原创 数据结构--一致性哈希、虚拟节点、布隆过滤器

1、一致性哈希:由于服务器数量发生改变,导致服务器中的数据受到影响2、这是一个圆形,认为这个圆上存在无数个点,假设这个圆上存在2^32个点,每个点有一个编号从0~2^32这时,图片的关键字对2^32取余,结果看到底放到哪一台服务器上服务器分布不均匀,会导致有的服务器压力过大崩溃,因此引入虚拟节点虚拟节点:不存在的点,臆想出来的点 3、布隆过滤器 使用场景:假设有11E个整型值,不重复,现在需要确定X值在不在这10E个整型值内?(从...

2022-03-23 09:00:00 190

原创 数据结构--直接插入排序、希尔排序

八大排序:冒泡排序、选择排序、直接插入排序、希尔排序、堆排序、归并排序、快速排序、基数排序(桶) 直接插入排序:开始将数据分为两部分,初始数据都是无序的,每一次从待排序队列中取出一个值,放到我们已排序好的队列中,将其调整有序,再从待排序队列中取一个值,直到待排序队列中没有值结束。调整规则:将待插入的值和有序队列的所有值挨个比较(从右到左),找到一个小于或者等于自己的值,则停下,插入到当前位置的下一个位置。代码:直接插入排序的特点:1、时间复杂度过大O(N^2)...

2022-03-22 11:15:00 500

原创 数据结构---堆排序

1、叶子完全二叉树:节点必须按从左到右存放,少也要从右边节点开始少,不能从中间突然少一个节点满二叉树:也是完全二叉树的特例大顶堆:父节点的值大于孩子节点 小顶堆:父节点的值小于孩子节点 叶子节点:2、堆排序:默认从小到大排序,使用大顶堆 默认从大到小,使用小顶堆(1)...

2022-03-22 10:33:40 3212

原创 数据结构--利用链地址法处理哈希冲突

链地址法:1、结构体设计:typedef int ELEM_TYPE;#define MAX_SIZE 12//链地址法 中 后边连接的单链表的有效节点设计:typedef struct Node { ELEM_TYPE data;//一个数据域 struct Node *next;//一个指针域}Node, *PNode;//链地址法的 哈希表头设计typedef struct Head{ struct Node arr[MAX_SIZE]; //数组 12个格子

2022-03-21 09:54:05 2178

原创 数据结构----哈希

哈希函数的构造方法:1、直接定址法2、数字分析法3、折叠法4、除留余数法5、随机数法6、平方取中法如何处理哈希冲突:1、开放地址法2、再散列函数法3、链地址法4、公共区溢出法...

2022-03-18 19:04:50 1028

原创 数据结构---用两个栈实现一个队列

规则:入对:入对只向s1里面入对出对:看s2是否有值,有的话直接出,若没有,将s1里面的值,全部颠倒放到s2中,此时s2不为空,则直接出1、结构体设计//用两个栈模拟实现的队列的结构体typedef struct Two_stack_queue{ struct Stack s1; struct Stack s2;}Two_stack_queue,*PTwo_stack_queue;2、可操作函数(1)初始化//初始化void my_Init_2stack_...

2022-03-16 09:46:10 259

原创 数据结构---用两个队列实现一个栈

1、结构体设计//用两个队列模拟实现的栈的结构体声明typedef struct Two_queue_stack{ struct LQueue q1; struct LQueue q2;}Two_queue_stack, *PTwo_queue_stack;2、可操作函数(1)初始化//初始化void my_Init_two_queue_stack(struct Two_queue_stack* tqs){ Init_LQueue(&tqs->q1)..

2022-03-14 18:59:46 370

原创 数据结构--链队列

1、结构体设计//链队列的结构体设计typedef int ELEM_TYPE;//有效数据节点的结构体设计:typedef struct Node{ ELEM_TYPE data;//数据域 struct Node* next;//指针域}Node, *PNode;//头结点的结构体设计:typedef struct LQueue{ struct Node* front; struct Node* rear;}LQueue, *PLQueue;2、可操...

2022-03-13 09:45:55 177

原创 数据结构--循环队列

1、结构体设计//循环队列结构体设计:typedef int ELEM_TYPE;typedef struct Queue{ ELEM_TYPE *base; //这个指针用来接收malloc从堆里申请的数组 int front;//队头指针(实际上保存的是数组下标,int) int rear;//队尾指针 (实际上保存的是数组下标,int)}Queue, *PQueue2、可操作函数(1)初始化、入队//初始化void Init_queu...

2022-03-12 18:07:49 113

原创 数据结构--链栈

1、 结构体设计typedef int ELEM_TYPE;//链式栈的结构体声明: 直接用单链表的即可typedef struct LStack{ ELEM_TYPE data;//数据域 struct LStack* next;//指针域}LStack, *PLStack;2、可操作函数(1)初始化、入栈(相当于头插)//初始化void Init_LStack(struct LStack* ps){ //assert ps->next = NUL..

2022-03-09 09:26:05 178

原创 数据结构--顺序栈

1、结构体设计//顺序栈的结构体设计:#define INIT_SIZE 10typedef int ELEM_TYPE;typedef struct Stack{ ELEM_TYPE * base;//一个指针,用来接收malloc从堆内申请的一整块内存 int top;//栈顶指针(和书上不一致,书上是指针类型,我们这里存的是数组下标,所以用int类型,也能达到指针的作用) int stack_size;//存储当前的最大容量}Stack, *PStack2..

2022-03-08 09:27:35 113

原创 数据结构--循环链表

循环链表:与单链表相比,尾节点的Next域不再指向NULL,而指向头结点1、结构体设计//循环链表结构体设计typedef int ELEMTYPE;typedef struct Clist{ ELEMTYPE data; //数据域 存放数据 struct Clist* next;//指针域 存放下一个节点的地址(尾结点的next保存头结点的地址)}Clist, *PClist;2、主要操作函数(1)初始化、头插、尾插、按位置插//初始化void

2022-03-07 09:56:23 241

原创 数据结构--双向链表

双向链表的链表图:1、结构体设计//双向链表结构体设计:typedef int ELEM_TYPE;typedef struct Dlist{ ELEM_TYPE data;//数据域 保存有效值 struct Dlist* next;//指针域 保存下一个节点的地址(后继) struct Dlist* prior;//指针域 保存上一个节点的地址(前驱)}Dlist, *PDlist; 2、双向链表的基本操作函数(1)初始化、购买新节点

2022-03-06 18:22:21 106

原创 数据结构--不带头结点的单链表

需要用到二级指针1、结构体设计//不带头结点的结构体设计:typedef int ELEM_TYPE; //有效数据节点结构体设计typedef struct Node{ ELEM_TYPE data;//数据域 (1.头结点:不保存任何数据 2.有效数据节点:保存有效值) struct Node *next;//指针域 (1.头结点:保存第一个元素的地址 2.有效数据节点:保存下一个有效元素的地址)}Node, *PNode;2、可执行的操作函数(

2022-03-03 21:50:00 262

原创 数据结构--带头结点的单链表

单链表分为:带头结点和不带头结点,不带头结点的单链表需要用到二级指针,容易出错。

2022-03-02 15:51:33 4564

原创 数据结构不定长顺序表

在定长顺序表的基础上进行改动:1、结构体设计2、typedef int ELEM_TYPE;#define INIT_SIZE 10//不定长顺序表的结构体设计:typedef struct Dsqlist{ ELEM_TYPE *elem;//指针,用来接收malloc返回值 int length;//当前有效值个数(当前有多少个格子被占用) int list_size;//当前总空间个数(当前一共有多少个格子)}Dsqlist, *PDsqlist;2、不

2022-03-01 09:28:33 113

原创 数据结构--定长顺序表

1、 结构体设计:代码:#define MAX_SIZE 100//定长顺序表typedef struct sqlist{ int arr[MAX_SIZE];//存放有效数据 是一个静态数组 int length; //存放有效值个数 }sqlist, *Psqlist;2、定长顺序表的基本操作(1)初始化//将定义的struct sqlist普通成员变量进行初始化void Init_sqlist(struct sqlist *p)//void ..

2022-02-28 21:25:02 167

原创 学生管理系统(输入信息、加载信息、查询信息、删除信息、退出程序模块)

#include <stdio.h>#include <stdlib.h>#include <assert.h>#include <string.h>#define INIT_SIZE 100#define SIZE 3typedef struct Student{ char id[15]; //15 char name[20]; //15+20 char sex[10]; //35+10 int age; //.

2022-01-06 16:33:32 501

原创 魔方阵(奇数和偶数阶)的编写

1、奇数阶魔方阵的数字规律(1)自然数1出现在第一行的正中间;(2)若填入的数字在第一行(不在第n列),则下一个数字在第n行(最后一行)且列数加1(列数右移一列);(3)若填入的数字在该行的最右侧,则下一个数字就填在上一行的最左侧;(4)一般地,下一个数字在前一个数字的右上方(行数少1,列数加1);(5)若应填的地方已经有数字或在方阵之外,则下一个数字就填在前一个数字的下方。(一般地,n的倍数的下一个数字是在该数的下方。)//奇数魔方阵void Magic1(){#define ROW

2022-01-03 18:54:53 2646

原创 文件的相关知识

1、文件是什么2、文件识别包括三部分:(1)文件路径(2)文件(3)文件3、数据流4、文件操作步骤5、文件指针

2021-12-31 22:33:02 123

原创 在主函数中输入10个等长的字符串,用另一个函数对他们进行排序,然后在主函数中输出这10个已经排好序的字符串。

void BubbleSort_str(const char** arr, int len){ for (int i = 0; i < len - 1; i++) { for (int j = 0; j + 1 < len - i; j++) { if (strcmp(arr[j], arr[j + 1]) > 0) { const char* tmp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] =.

2021-12-12 13:26:06 2053 1

原创 有一个字符串,包含n个字符,写一个函数,将此字符串从第m个字符开始的全部字符复制成为另一个字符

void Get_M_str(char* des, const char* src, int m){ const char* p = src; for (int i = 1; i < m; i++) { p++; } strcpy_s(des, 100, p); /*while(*p != '\0') { *des++ = *p++; } *des = '\0';*/}int main(){ char str[100] = {0}; const char .

2021-12-11 12:44:24 1431

原创 输入一个字符串,内有数字和非数字字符,例如A123x456 17960? 302tab5876,将其中连续的数字作为一个整数,依此存放到一个数组a中。

输入一个字符串,内有数字和非数字字符,例如A123x456 17960? 302tab5876,将其中连续的数字作为一个整数,依此存放到一个数组a中。例如,123放在a[0],456放在a[1]...统计总共有多少个整数,并输出这些数int Get_str_Num_Count(const char* str)//求一共需要存几个数{ int count = 0;//计数器count=0 while (*str != '\0')//从str的首位置开始遍历,直到遇到'\0'结束 {...

2021-12-10 12:25:09 2051

原创 枚举的定义和使用,位域相关知识

1、枚举类型:即列举枚举类型的特点:(1)枚举类型是一个受到限制的有符号的类型;(2)枚举值(元素)必须是整型值(有符号);//char 类型可以是‘A’,short类型可以,不允许字符串“abc”,float double 指针(3)枚举变量的取值必须在枚举值的集合中;注:给枚举值赋的值可以重复,但枚举值(元素)不可以重复枚举的优点:(1)增加代码的可读性和可维护性;(2)和宏不同,枚举有类型检查更安全;(3)封装性好;(4)便于调试;(5)使用方...

2021-12-09 20:16:57 1127

原创 联合体相关知识3

5、枚举和联合体共用体:还叫联合体,共用体内所有成员共享同一内存,每个成员都是顶头开始 共用体所占共享内存,所有成员都可以使用,但是当一个成员使用内存的时候,其他成员最好不要使用,容易出错。(1)共用体求大小,需要整体大小能整除其最大内置类型的成员所占的字节数union C{ char a; short b; int c;};union D{ char a; short b; int c; int arr[5];};union E{ char a;...

2021-12-07 17:16:44 121

空空如也

空空如也

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

TA关注的人

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