自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 搞定常用的排序方法(C++实现)

排序就是把一个杂乱无章的序列按照从小到大或者从大到小的顺序依次排列,排序的方法有很多,比如最令人感到熟悉的冒泡排序,还有容易理解的插入排序、具有划时代意义的希尔排序,本文将介绍几种常用的排序方法。 首先是冒泡排序,这个排序方式有点像生活中烧开水的时候,那个泡泡从底往上冒,泡泡从小到大的变化。看图: 经过一轮循环后,9的位置就确定下来了,就在最后的位置上,确实是的,因为9是这个序列中最大的元素。 开始第二轮循环,这要注意点哦! 注意啦,注意啦!!! 如果相同的元素在排序之后相对位置并没有

2020-06-24 16:31:36 289

原创 图解KMP算法!

故事的开头是这样的呢,TOM给出了一串长长长长长的没有间隔的英文,要求JERRY从中找出自己名字,并记录下自己名字的第一个字母在该长长长的英文中的位置。如图: 很明显,第一次匹配失败,那就向右移动。 还是匹配失败,那怎么办,继续重复这个动作咯,功夫不负有心人,最终在第七次匹配成功,VICTORY!!! 其实这样的做法是最简单也是最朴素的,简称暴力破解算法(Brute Force),也称为幼稚BF算法,虽然幼稚但实现起来还是挺有讲究的,看看我怎么实现的。 #include <iostream>

2020-06-20 18:23:40 241

原创 用栈实现队列,用队列实现栈。好玩!!!

因为在数据结构中,栈和队列长得实在是太像了,将他们拿来比较是不可避免的,栈—后进先出,而队列—先进先出。同样是只能在一端进行操作,那么问题来了,能相互实现?? 能不能得好好分析一下嘛,如果是用两个栈来实现队列,好像这操作可以哦。图解一下,你就明白! 显然用两个栈可以实现队列的功能,就是借助另一个栈来中转一下,这样的操作在图论算法中的dijkstra求最短路径中也会用到。把后进先出转换成先进先出。那么怎么用代码来实现呢?既然需要两个栈,那就定义两个栈呗,一个用于进队列操作,另一个栈就用于出队列操作,完美解决

2020-06-19 12:42:22 264

原创 实现数据结构中的队列---先进先出(FIFO)

队列完完全全就是生活中的队列(当然不包含插队的情况),饭堂打饭需要排队,去银行办理业务也需要排队,显然的,排在第一的那个人儿肯定最先得到服务,完成待办的事情。最后的那个人得看银行下班了没! 这些都是实实在在的队列,数据结构中的队列所实现的功能也正是如此,把元素加到队列叫入队(enqueue),把元素从队列中移除叫出队(dequeue),只能从队头中获取元素(front),额,队列的主要操作就三个了,看看图就知道队列的实现很简单。 队列也可以分为两种实现方式,一是顺序队列,用原生数组来实现,二是链式队列,使

2020-06-19 09:58:44 1577

原创 实现数据结构中的栈---后进先出LIFO

书本整齐跨一叠在一起,最后放在最上面的那本最先拿走,生活中有很多后进先出的列子,就不一一说明了,用图来说明应该很好理解。 放在最上面的那本书的位置叫栈顶,栈顶是可变的,比如说你拿走了西游记,那么栈顶就是红楼梦得位置。相对应的栈底是不可操作的一端。 栈是一种特殊的线性表,特殊之处在于只能在一端对其进行操作,把元素放到栈中,这操作叫压栈(push),压栈之后,栈顶指针就向上移动。把元素从栈顶弹出,这叫出栈(pop),出栈后栈顶指针向下移动。访问栈只能从栈顶元素进行。栈是很重要的数据结构,在很多算法都有应用,比

2020-06-18 12:17:21 2594 1

原创 用C++来KO链表!!!

有一种很常用的数据结构叫链表,他简直就是孙悟空,七十二变还觉得少,单向链表,单向循环链表,双向链表,双向循环链表。。。。而且还有带头结点的、不带头节点的。果然是纷繁复杂的世界,不管怎样,先从最简单的开始。 一张粗图胜过千言万语,用图解的方式讲解数据结构是最好的方法。下图就是一个带头结点的单向链表。 创建一个带头结点的链表很简单,但是创建好的链表好像没啥用, ...

2020-06-17 18:20:20 292

原创 数组的新玩法,创建数组类。

数组的新玩法,创建数组类。 C语言中的数组不好用吗?为什么需要数组类?仔细思考一下,原生数组有缺点吗?额,还真有!在使用数组的时候,使用者想要获取数组的长度是比较麻烦,如果不清楚函数参数传递的规则,使用函数来求数组长度,得到的必然是错误的结果。比如: #include <iostream> using namespace std; int array_length(int a[]) { return sizeof(a)/sizeof(*a); } int main(int argc, co

2020-06-16 10:24:07 262

原创 详解C++中函数重载与操作符重载

详解C++中函数重载与操作符重载 C++对C语言进行了巨大的扩展,其中重载就是其中之一,重载概念的由来是面向对象编程的思想延申,把现实生活中的东西融入到编程语言。重载相当于自然语言中的词汇搭配,打球,打篮球,打羽毛球,打乒乓球,打字与不同的名词结合产生不同意思,重载使得C++拥有丰富的语义表达能力。要时刻知道的是,函数重载的本质是不同的函数,C++编译器在背后做了很多的事情。现在我们就先来逐一解析函数重载吧。 #include <iostream> using namespace std;

2020-05-11 17:19:20 447

原创 指针中的战斗机---智能指针!!!

指针是C语言中的精髓,智能指针是C++中的王炸 温故知新,可以为师。在开启智能指针学习篇章前,先来探望老朋友---C语言中的精髓---指针。指针的本质是变量,何为变量,变量就是用特定的数据类型...

2020-03-18 23:37:58 217

原创 硬核,用C语言实现面向对象!!!

用C语言实现面向对象,听起来就有不可思议的感觉,那真的可以实现吗?我觉得OK! 要使用C语言这种面向过程的语言来实现面向对象,首先要做的事情是去了解面向对象是怎样的概念,列:继承的本质是怎样的一回事,多态又是怎么来的。 在面向对象语言中,继承通过子类声明为某个父类的继承,在C++中,继承的方式有public 继承,private 继承,protected 继承,分别为公有继承,私有继承,保护继承,...

2020-02-23 11:46:47 531

原创 C语言中似是而非的const

@TOC被const修饰的变量是只读的,其本质还是变量,其所修饰的变量又可分为全局(global)变量和局部(local)变量,而局部变量又可分为一般局部变量和static修饰的局部变量,编译器不允许被const修饰的变量出现在赋值符号的左端在这里插入代码片 在现代C语言编译器中,const将具有全局生命周期的变量存储与只读存储区,换句话说,即将全局变量和static修饰的局部变量存储与只读存储区...

2020-01-07 18:04:58 159

空空如也

空空如也

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

TA关注的人

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