自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Mr 羊的博客

热爱驱动进步,分享得到升华

  • 博客(12)
  • 收藏
  • 关注

原创 红黑树快速理解

认识红黑树我觉得认识红黑树的第一步要从为什么发明并使用它开始。学习数据结构这门课的同学,如果用的是严蔚敏老师的经典教材的话,其中是没有对红黑树进行讲解的,但一定学过二叉搜索树和AVL树(平衡二叉树)。其中二叉搜索树解决的是查找问题,好的情况下的时间复杂度能达到O(logn),但也存在坏的情况,最坏的情况就是此树极度不平衡,此时便退化成一条链表,时间复杂度为O(n)。我们当然不希望这种最坏的情况发生,所以我们引入AVL树,但AVL树的条件太过严格和理想。由此,红黑树便登上了舞台,它既能解决二叉搜索树不平衡

2020-06-29 11:43:48 837

原创 优雅的设计之局部资源管理

局部资源管理(what)在c++的设计中,对于资源的管理是非常重要的,一旦管理不好就会容易导致内存泄漏,从而出现严重的问题,c++之父引入了资源管理的手法,名叫RAII,它是“Resource Acquisition Is Initialization”的首字母缩写。也称为“资源获取就是初始化”,是c++等编程语言常用的管理资源、避免内存泄露的方法。它保证在任何情况下,使用对象时先构造对象,最后析构对象。资源的获取代码在构造函数中写,资源的释放在析构函数中写。为什么这样设计(why)我们都知道,c++

2020-05-12 11:23:45 242 1

原创 java和c++之堆栈的故事

故事简介c++是个向往自由的boy,他对堆栈的态度是:自由灵活。java认为生而为编程语言,就应该受到一定的约束才能更快活。于是他们与堆栈便开始了扯不开的羁绊。好了好了,引子介绍完了,开始正文。创建对象c++它创建对象可以在堆上创建也可以在栈上创建,java则所有的对象都在堆上创建。c++的对象的创建c++创建对象有两种方式,一种是动态在堆上创建:object *o = new ob...

2020-04-23 20:45:34 170

原创 ubuntu安装redis以及五种数据结构的基本操作介绍

ubuntu安装redis直接用命令安装即可。sudo apt-get install redis-server启动服务redis-server出现上图之后说明redis安装成功且服务启动了。之后可以根据需要修改配置文件完成配置。键入以下命令便进入redis命令行客户端redis-cli五种数据结构的操作说明我会在命令行客户端演示说明。string字符串的三个基本...

2020-04-16 20:09:13 738

原创 造轮子之实现一个栈类(c++)

造轮子之实现一个栈类栈:先进后出的数据结构,在实际开发过程中运用普遍,在这里就简单的实现一个字符串类型的栈类。先写一个Stack的头文件 Stack.h,在头文件中声明了必需的成员函数。#include<vector>#include<string>using namespace std;class Stack{ public: bool push(con...

2020-04-11 09:38:31 255

原创 sizeof和strlen区分与详细解读

sizeof与strlen本质区别sizeof是c/c++中一个关键字,可以认为是一种运算符,而strlen则是库函数,首先理解本质,接下来的区别就很好理解了。sizeof和strlen的用法sizeof由于本质是关键字、运算符,他的操作都是在编译阶段执行的,所以sizeof不能用来返回动态分配的内存空间大小和指针指向的内存空间大小。strlen()是计算字符串的长度的函数,直到遇到结束符...

2020-03-25 20:13:27 228

GDB基本操作和TUI模式

GDB的基本操作GDB是一款功能很强大的程序调试工具,当然不同于图像化界面的调试工具,你需要掌握一定的命令才进行操作。在linux下开发,GDB可谓是非常重要。#常用的基本命令GDB最长用的是设置程序断点,在断点处查看相关变量的值,单步运行,查看堆栈等信息了。命令作用run运行程序list显示代码start开始执行程序,在main第一条语句前停下...

2020-03-18 10:31:07 572

原创 二叉树递归和非递归遍历的C语言的实现

二叉树递归和非递归遍历的C语言的实现#递归实现这个在逻辑和实现上都很简单,但是执行速度并不如非递归快,原因是递归必定反复进行函数调用,函数调用过程是比较慢的。void CreateBitree(BiTree &t){ //先序建立二叉树 int in; scanf("%d",&in); if(in==0) t=NULL; else{ t=(BiTre...

2020-03-16 22:04:50 327

原创 冒泡排序和简单排序C语言实现和比较

冒泡排序冒泡排序属于交换排序的一种,算法如其名,它通过两两比较相邻关键字,如有逆序则交换,不断使关键字小的往上冒,关键字大的往下沉。冒泡排序这里给出两种,其中一种容易和选择排序混淆,在后面也给了区分解析。void simplebubble(int a[],int len){ //一种比较暴力效率较低的冒泡 int i,j; for(i=0;i<len;i++){ //这里两步和...

2020-03-14 11:59:40 308

原创 快排的C语言实现

数据结构篇:快排的C语言实现与个人解析快排是很经典的算法,时间复杂度为O(n*log2n),空间复杂度最好O(log2n),最坏O(n),快排是一种不稳定排序。#include<stdio.h>#include<stdlib.h>#define Maxsize 7typedef struct { int r[Maxsize]; int length;}SqL...

2020-03-12 23:31:26 195

原创 循环队列的C语言实现以及和循环链表的区别

数据结构篇:循环队列的C语言实现及其基本操作#简述循环队列在有些嵌入式软件开发中使用频繁,同时队列是非常重要的数据结构。#include<stdio.h>#include<stdlib.h>#define Maxsize 20 //队列达到的最大长度 typedef struct { //循环队列的存储结构 int *base; int fr...

2020-03-12 13:15:25 3110

原创 循环链表的C语言实现

@TOC数据结构篇:循环链表的C语言实现知识基础知识基础包括C语言结构体,数据结构之链表。实现的C语言代码在理解知识的基础上,实现循环链表初始化、增加、删除操作。#include<stdio.h>#include<stdlib.h>static int size=0; typedef struct Node{ //定义一个链表的结点 int ...

2020-03-11 23:41:52 641

空空如也

空空如也

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

TA关注的人

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