自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 哈希(含原码)

(因为14放在4后面,如果4删除了,那么这个位置变成空,遇到空了还没找到14,那么肯定没有14这个值,因为如果有就在空这里放14了)因此线性探测采用标记的伪删除法来删除一个元素。对于两个数据元素的关键字,但有:Hash(key1) ==Hash(key2),即:不同关键字通过相同哈希哈数计算出相同的哈希地址,该种现象称为哈希冲突或哈希碰撞。比如现在需要插入元素14,先通过哈希函数计算哈希地址,hashAddr为4,因此44理论上应该插在该位置,但是该位置已经放了值为4的元素,即发生哈希冲突。

2022-09-21 12:49:26 749

原创 俄罗斯农民乘法(快速乘)

快速乘

2022-08-29 22:06:46 394

原创 Linux进程状态

如果OS不回收Z状态的进程,那么这个进程就会一直被维护,该进程的相关资源就不会被释放,造成内存泄漏,因此父进程一般要回收Z的子进程。当PRI越低的时候,优先级就越高,我们每次修改nice的值的时候,我们的PRI都会先被重置为80,再加上我们的nice值来修改优先级,Linux不允许进程无节制设置优先级,nice的取值范围是-20到19,prio的取值范围是60到99。释放进程也需要排队呢?孤儿进程:如果父进程提前退出,子进程还在运行,那么子进程就会被1号进程领养,也就是OS,那么这个进程就叫孤儿进程。...

2022-08-28 14:54:33 552

原创 Linux进程概念

我们平常说的打印,其实就是将数据写到硬件上(显示器),我们肯定是没有的。校长要管理成千上万的学生,肯定不能把每个学生的信息全记在脑子里,于是就产生学生管理系统,每个学生的信息都用一个结构体来表示,结构体里有学生的姓名、学号、宿舍楼、年龄等等这些成员,再用我们学过的链表连接起来,那么全校的信息就都组织在了一起。除了pid,每个进程还有ppid,也就是父进程的标识符,而几乎在命令行上所执行的所有指令,如cmd,都是bash进程的子进程。那么管理的本质:对数据的管理就变成了对数据结构的管理,如链表的增删查改。..

2022-08-28 14:16:57 212

原创 红黑树总结

目录红黑树的概念红黑树的性质红黑树节点定义红黑树的结构红黑树的插入红黑树的验证红黑树与AVL树的比较红黑树,是一种二叉搜索树,在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。 通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路径会比其他路径长出俩倍,因而是接近平衡的。 1. 每个结点不是红色就是黑色2. 根节点是黑色的3. 如果一个节点是红色的,则它的两个孩子结点是黑色的4. 对于每个结点,从该结点到其所有后代叶结点的简单路径上,均 包含相同数目的黑

2022-08-07 11:22:49 161 1

原创 AVL树大总结

//左孩子//右孩子//父节点// 右子树-左子树的高度差int _bf;其中数据用pair(键值对来存储),详情可看下链接pair。

2022-08-03 13:28:15 290 4

原创 二叉搜索树

英汉词典中英文与中文的对应关系,通过英文可以快速找到与其对应的中文,英文单词与其对应的中文就构成一种键值对;以词库中所有单词集合中的每个单词作为key,构建一棵二叉搜索树在二叉搜索树中检索该单词是否存在,存在则拼写正确,不存在则拼写错误。2.KV模型每一个关键码key,都有与之对应的值Value,即的键值对。若它的左子树不为空,则左子树上所有节点的值都小于根节点的值。若它的右子树不为空,则右子树上所有节点的值都大于根节点的值。其中带R的为递归实现。...

2022-07-27 19:06:43 124

原创 继承与派生

继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。像下面的代码类学生和老师都继承自Person{public{}protected//姓名//年龄};{protected//学号};{protected//工号};intmain(){Students;{...

2022-07-21 14:48:25 117

原创 Linux权限

目录权限的概念权限的管理文件访问者分类(人)文件类型和访问权限(事物权限)文件权限值的表示方法文件访问权限的相关设置方法目录权限粘滞位Linux下有两种用户:超级用户(root)和普通用户超级用户:可以再linux系统下做任何事情,不受限制普通用户:在linux下做有限的事情。超级用户的命令提示符是“#”,普通用户的命令提示符是“$“命令: su [用户名]功能:切换用户。例如,要从root用户切换到普通用户user,则使用 su user。 要从普通用户user切换到root用户则使用 su ro

2022-07-07 10:26:57 253

原创 C++模板

想一想,如果我们需要实现一个通用的交换swap函数,那我们可以像这样,把每种类型的函数都写出来,构成函数重载使用函数重载虽然可以实现,但是有一下几个不好的地方:1. 重载的函数仅仅是类型不同,代码复用率比较低,只要有新类型出现时,就需要用户自己增加对应的函数2. 代码的可维护性比较低,一个出错可能所有的重载均出错那如果在C++中,能够存在这样一个模具,通过给这个模具中填充不同材料(类型),来获得不同材料的铸件(即生成具体类型的代码),那将会节省许多头发。这就是泛型编程。泛型编程:编写与类型无

2022-05-31 22:23:52 138 1

原创 内存管理总结

目录1. C/C++内存分布2. C语言中动态内存管理方式3. C++中动态内存管理3.1new/delete操作内置类型3.2new/delete操作自定义类型4. operator new与operator delete函数5. new和delete的实现原理5.1内置类型5.2自定义类型6. 定位new表达式(placement-new)7. 常见面试题7.1malloc/free和new/delete的区别7.2内存泄露7.2.1什么是内存泄露

2022-05-27 10:58:00 107

原创 类和对象——part3

目录1.构造函数深入1.1初始化列表1.2explicit关键字2.static成员2.1概念2.2特性3.C++11初始化新功能4.友元4.1友元函数4.2友元类5.内部类1.构造函数深入1.1初始化列表初始化列表:以一个冒号开始,接着是一个以逗号分隔的数据成员列表,每个"成员变量"后面跟一个放在括号中的初始值或表达式。class Date{public: Date(int year, int month, int day)...

2022-05-24 11:08:11 173 6

原创 类和对象——part2

目录1. 类的6个默认成员函数2. 构造函数2.1概念2.2特性3. 析构函数3.1概念3.2特性4. 拷贝构造函数4.1概念4.2特性5. 赋值操作符重载5.1运算符重载5.2赋值运算符重载6. 日期类的实现7. const成员函数8. 取地址及const取地址操作符重载1. 类的6个默认成员函数如果一个类中什么成员都没有,简称为空类。空类中什么都没有吗?并不是的,任何一个类在我们不写的情况下,都会自动生成下面6个默认成员函数。2

2022-05-22 14:32:21 123 9

原创 类和对象——part1

进入类和对象!1.面向过程和面向对象初步认识C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。C++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。举个例子,就拿我们去商店买东西来说,如果是面向过程,那么我们关注的是商店如何进货,商品如何售卖等等,但是如果是面向对象,那我们就注重商店提供的服务和顾客来商店有什么需求。这是两种思维模式2.类的引入C语言中,结构体中只能定义变量,在C++中,结构体内不仅可以定义变量,也.

2022-05-12 19:49:44 152 7

原创 一文掌握C++基本语法

今天起终于能正式开始将自己学习C++的旅程记录在优快云啦!目录1. C++关键字2. 命名空间2.1 命名空间定义2.2 命名空间使用3. C++输入&输出4. 缺省参数4.1 缺省参数概念4.2 缺省参数分类5. 函数重载5.1 函数重载概念5.2 名字修饰5.3 extern “C”6. 引用6.1 引用概念6.2 引用特性6.3 常引用6.4 使用场景6.5 传值、传引用效率比较6.6 引用和指针的区别7.

2022-05-12 14:11:10 292 3

原创 万字呕心沥血排序配图大总结

目录1.排序的概念及其运用1.1排序的概念1.2排序运用1.3 常见的排序算法2.常见排序算法的实现2.1 插入排序2.1.1基本思想2.1.2直接插入排序2.1.3 希尔排序( 缩小增量排序 )2.2 选择排序2.2.1基本思想2.2.2 直接选择排序2.2.3 堆排序2.3 交换排序2.3.1冒泡排序2.3.2 快速排序2.3.2 快速排序优化2.3.2 快速排序非递归2.4 归并排序2.5 非比较排序3.排序算法复杂度

2022-04-23 21:12:21 862 13

原创 牛头鬼脸二叉树

目录树的概念及结构树的概念树的相对概念树的表示树的实际应用二叉树的概念及结构概念现实中的二叉树特殊的二叉树二叉树的性质二叉树的存储结构二叉树的顺序结构及实现二叉树的顺序结构堆二叉树链式结构的实现说明二叉树的遍历前序、中序、后序遍历层序遍历节点个数以及高度二叉树oj练习二叉树的创建和销毁树的概念及结构树的概念树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因

2022-04-15 17:23:59 953 11

原创 堆、堆排序、TOP-K问题

目录什么是堆堆的实现堆排序TOP-K问题什么是堆如果有一个关键码的集合K,把它的所有元素按完全二叉树的顺序存储方式存储在一个一维数组中,并满足所有的父节点大于等于它的子节点的叫大堆,所有的父节点小于等于它的子节点的叫小堆。性质:1.堆中某个节点的值总是不大于或不小于其父节点的值; 2.堆总是一棵完全二叉树;堆的实现头文件:#include<stdio.h>#include<assert.h>#include&...

2022-04-08 13:24:59 1242 9

原创 轻松拿下埃氏筛和线性筛

今天浅学一下一个简单算法通常,我们写的筛选素数的算法是这样的:bool isPrime(int x) { for (int i = 2; i <= sqrt(x); ++i) { if (x % i == 0) { return false; } } return true;}如果要检查n个数时间复杂度为O(n*sqrt(n)),空间复杂度为O(1)下面来看看埃氏筛,...

2022-04-06 10:10:04 678 14

原创 吃饭的时候也能学的栈和队列

栈和队列

2022-03-27 13:42:38 1740 9

原创 双向带头循环链表

目录初始化删除添加查找销毁初始化typedef int LTDataType;typedef struct ListNode{ struct ListNode* prev; struct ListNode* next; LTDataType val;}ListNode;ListNode* ListInit(){ ListNode* phead = BuyListNode(0); phead->next = phead; phead->pre

2022-03-25 14:47:55 1659 15

原创 轻松拿下单链表

单链表详解

2022-03-22 10:45:26 858 11

原创 文件操作详解

目录什么是文件文件的打开和关闭文件的顺序读写文件的随机读写文本文件和二进制文件文件读取结束的判定文件缓冲区什么是文件在程序设计中,我们一般谈的文件有两种:程序文件、数据文件(从文件功能的角度来分类的)。其中程序文件包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj),可执行程序(windows环境后缀为.exe)。而数据文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运行需要从中读取数据的文件,或者输出内容的文件。文件名包含3部分

2022-02-23 08:06:44 284 7

原创 通讯录(可保存本地)

目录前言代码一览代码剖析总结前言制作这个通讯录主要用到了以自定义类型(结构体、枚举类型)、文件操作、指针、动态内存分配的知识,代码共计300行左右通讯录实现了动态容量以及保存功能代码一览test.c文件:(主函数所在)#define _CRT_SECURE_NO_WARNINGS 1#include "contact.h"void menu(){ printf("*******************\n"); printf("****1.Add .

2022-02-22 11:26:32 2296 20

原创 字符串函数和内存函数

目录strlenstrcpystrcatstrcmpstrncpystrncntstrncmpstrstrstrtokstrerrormemcpymemmovememcmpstrlensize_t strlen ( const char * str );字符串已经 '\0' 作为结束标志,strlen函数返回的是在字符串中 '\0' 前面出现的字符个数(不包含 '\0' )。参数指向的字符串必须要以 '\0' 结束。注意函数的返回值为s

2022-01-21 22:06:48 98

原创 指针进阶详解

通过一些面试、笔试题来深入了解指针//一维数组int a[] = {1,2,3,4};printf("%d\n",sizeof(a)); a单独放在sizeof内部,计算整个数组大小,16printf("%d\n",sizeof(a+0)); 计算第一个元素的地址的大小,4或8printf("%d\n",sizeof(*a)); 计算第一个元素的大小,4printf("%d\n",sizeof(a+1)); 计算第二个元素的地址的大小,4或8printf("%d\n",sizeof(...

2022-01-20 17:41:30 366

原创 可能是你见过最强的猜数字游戏(doge

本文完全原创!!!!!本文完全原创!!!!!本文完全原创!!!!!如有雷同请联系作者目录前言代码一览代码剖析总结前言因为学校期末原因,一直没有更新博客。距离上一篇博客居然已有一个多月,在2021年的最后一天痛定思痛,好好反省,怒肝一文。(当然不是为了应付学校作业啦。主要用到函数、指针的内容,较为简单剖析过程会带过easy的部分。代码实现了猜数字游戏几乎所有功能,包括以下:代码一览本项目仍与三子棋、扫雷一样,通过多文件形式实现,更为直观,可..

2021-12-31 20:57:07 2854 21

原创 打印螺旋数组

又看到一个比较有意思的题目,题目要求打印N*N螺旋方阵,比如5*5的方阵:1 16 15 14 13 2 17 24 23 12 3 18 25 22 11 4 19 20 21 10 56 7 8 9 这个题目乍一看没有什么思路,和平常的二维数组打印不太一样。所以不能按照平常的思考方式去想这道题是不对的。我们顺着题目的意思去思考,既然它的结果是螺旋的,那我们初始化数组的时候也螺旋初始化即可,可以发现数组是先从左边从上到下递增,再从最下面从左到右...

2021-12-05 23:12:08 641 4

原创 C语言实现打印某年某月的日历

#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>int main(){ int arr1[] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 }; int i = 0; int year = 0; int month = 0; int days = 0; int week = 0;//判断第一天周几 scanf("%d%d", &year, &month); if((.

2021-12-05 21:42:14 4890 2

原创 (干)深度剖析数据在内存中的存储

目录 前言1. 数据类型详细介绍2. 整形在内存中的存储:原码、反码、补码3. 大小端字节序介绍及判断4. 浮点型在内存中的存储解析 前言 大家好,今天这篇文章来深入剖析一下数据在内存中的存储,包括整型和浮点型,中间会穿插一些相关内容的例题来帮助理解、巩固。1. 数据类型详细介绍首先,C语言中的基本数据类型包括:(C99标准也加入了bool类型)注意C语言中并没有字符串类型。那么数据类型有什么意义呢?首先,数据类型决定了使用这...

2021-11-26 18:11:57 969 13

原创 一维/二维数组实现杨辉三角

如图所示,即为杨辉三角目录二维数组实现杨辉三角一维数组实现杨辉三角二维数组实现杨辉三角我们从杨辉三角中可以发现规律:d[i][j] = d[i - 1][j] + d[i - 1][j - 1],此法可以保存整个杨辉三角的数组,可以反复查询,但空间复杂度较高,为n²#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>int main(){ int arr[30][30] = { ...

2021-11-24 11:16:19 1017 1

原创 数组小总结

目录1. 一维数组的创建和初始化2. 一维数组的使用3. 一维数组在内存中的存储4. 二维数组的创建和初始化5. 二维数组的使用6. 二维数组在内存中的存储7. 数组越界8. 数组作为函数参数9. 数组的应用实例1:三子棋10. 数组的应用实例2:扫雷游戏1. 一维数组的创建和初始化一维数组的创建:type_t arr_name [const_n]; 其中type_t 用来指定数组的类型,const_n用来指定数组的大小数组创建的例子:...

2021-11-12 15:58:09 638 4

原创 扫雷(含递归展开空白)

目录前言代码总览代码剖析总结前言搭嘎好,今天写个小扫雷,和上次三子棋采用的模式大致相同,采用分文件的方式,建议食用上一篇后再食用这一篇,上次重复的部分内容会简略带过,今天话不多说直接进入正题。代码总览test.c文件#define _CRT_SECURE_NO_WARNINGS 1#include "game.h"void menu(){ printf("************************\n"); printf("****.

2021-11-11 23:23:36 1111 12

原创 三子棋(会堵棋)

目录前言三子棋规则代码实现代码剖析前言大噶好,今天整点三子棋。此三子棋并没有加入AI算法,电脑下棋纯属随机下棋(大佬绕行),所以真正的玩法其实是想办法让电脑获胜!(bushi ,这个小游戏的代码全部用C语言写出,涉及多维数组、函数以及一些零碎的知识点,为了增加可读性并深化函数的理解,代码由三个文件构成。1.text.c(游戏的测试)2.game.c(游戏实现、主体代码)3.game.h (函数声明、头文件)代码总计200+行,本文篇幅较长,需要对函数和数组,有一定理解..

2021-11-09 23:00:48 4818 2

原创 简单排序之冒泡排序

本文介绍冒泡排序及它的简单优化,用于自己总结复习冒泡排序思路:遍历数组,对数组中相邻的两个元素进行比较,如果需要升序,前一个数据大于后一个数据时,交换两个位置上的数据,直到所有的数据比较完,此时,最大的数据已经放在数组的末尾(大泡沉底),最小的数据已经放在数组的开始(小泡上浮)。动图展示:可以看到最小的1若在数组末尾,则需要进行9-1即8轮比较,在每一轮结束后较大的n个数依次按大小被放在数组末尾,再对前9-n个数进行排序代码如下:(此处数组长度为10)#include <s.

2021-11-06 14:28:31 228 1

原创 函数的小总结

感觉半辈子没写博客总结了,今天总结下函数,下次总结下数组目录1. 函数是什么2. 库函数3. 自定义函数4. 函数参数5. 函数调用6. 函数的嵌套调用和链式访问7. 函数的声明和定义8. 函数递归1. 函数是什么维基百科中对函数的定义:子程序在计算机科学中,子程序(英语:Subroutine, procedure, function, routine, method,subprogram, callable unit),是一个大型程序中的某部分代码, 由一个或多个语句

2021-11-05 15:51:31 774 7

原创 函数递归大总结,码住就完事啦

肝就完啦

2021-10-23 20:22:52 2494 34

原创 C语言实现查找数组中最大值

实现仅需要用到简单的循环语句,数组是否为有序数组都无所谓代码如下:#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>int main(){ int length; int arr[20] = {0}; int i, j; int a = 0; printf("请输入数组长度:\n"); scanf("%d" , &length); for (i = 0; i < length;i++)...

2021-10-19 13:27:50 48529 8

原创 递归实现汉诺塔(萌新)

第一遍写的时候没保存被删掉了,两小时白费,一切重来,希望如果有帮助的话能留下一个赞,真的感谢!文章目录前言https://mp.youkuaiyun.com/mp_blog/creation/editor#_10 一、汉诺塔是什么?/#pandas_19 二、汉诺塔问题的思考过程以及代码实现/#_26 三、一些可能的问题(我遇到的)http://1http://1 总结#_63前言本文章为刚刚接触C语言的大一新生自创,主要介绍汉诺塔问题及其解决方法一、汉诺塔是什么?.

2021-10-17 20:16:52 1483 22

空空如也

空空如也

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

TA关注的人

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