自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 哈希表——直接定址法

哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。       哈希表的做法其实很简单,就是把Key通过一个固定的算法函数既所谓的哈希函数转换成一个整型数字,然后就将该数字对数组长度进行取余,取余结果就当作数组

2016-08-23 14:49:34 3451

原创 C++实现单链表(类和对象)——简单实现

"test.cpp"#define _CRT_SECURE_NO_WARNINGS 1#include using namespace std;#include "LinkList.h"void Test(){ LinkList list; for (int i = 1;i < 6;i++) { list.PushBack(i); } cout<<list<<endl

2016-08-22 16:04:52 718

原创 C++实现动态顺序表(类和对象)

在我之前写的博客里,写过用C语言实现顺序表的博客(你们可以去看看哟),最近重新复习了C++,决定用C++重新实现一遍顺序表咦巩固我的基础。这里我用的是类来实现顺序表,下面是我代码的实现,简单易懂:"test.cpp"#define _CRT_SECURE_NO_WARNINGS 1#include using namespace std;#include "SeqList.h"v

2016-08-21 15:21:27 538

原创 模拟实现String类(2)——写时拷贝

大家都知道,重复的开辟空间和释放内存是很耗时的,效率也很低下,相对于写时拷贝,深拷贝就很耗费时间了,效率自然没有写时拷贝好。       写时拷贝是用一个计数器记住当前空间被多少个指针所指向,每次调用析构函数的时候,只需要看看自减后引用计数是否为零(是否只被最后一个指针所指向)。如果是,则销毁空间,如果不是,那么只需要引用计数减减即可,无需释放空间。      写时拷贝是一种高性能的写法,

2016-08-21 13:22:15 315

原创 模拟实现String类(1)_深拷贝

"test.cpp"#define _CRT_SECURE_NO_WARNINGS 1#include using namespace std;#include "Sring.h"void Test1(){ String str1("hello"); cout<<str1<<endl; String str2("haha"); cout<<str2<<endl; Stri

2016-08-20 14:06:16 402

原创 剑指offer——查找一个字符串中第一次出现一次的字符(哈希直接定址法)

哈希表——直接定址法的应用哈希表(Hash table,也叫散列表),是根据关键码值而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。直接定址法——取关键字的某个线性函数为散列地址,Hash(key)=key或者Hash(key)=A*key+B,A和B是两个常数。剑指offer面试题:查找一个字符串中第一次出现一次的字符

2016-08-18 13:57:57 962

原创 堆的应用——在N个数中找到最大的前K个数

在堆的应用中,有一道很经典的面试题,题目是:“在100w个数中找到最大的100个数”。对于堆的相关知识和堆实现的代码在我的前2前博客中都有详解,对于这道题会有很大的帮助。        让我们来剖析一下这道题,我们先建立两个数组,一组数组arr的大小为N,另一组数组topk的大小为K,显然,我们要对topk建堆。找最大的前K个数字自然要建立小堆。则根节点(即topk[0])是K个数字中最小的一

2016-08-18 12:20:27 762

原创 实现大堆小堆——仿函数的应用

仿函数:就是使一个类的使用看上去象一个函数。其实现就是类中实现一个operator(),这个类就有了类似函数的行为,就是一个仿函数类了。“Test.cpp”#define _CRT_SECURE_NO_WARNINGS 1#include using namespace std;#include "Heap.h"void Test(){ int arr[] = {10,16,

2016-08-06 10:46:01 429

原创 数据结构——实现最大堆

什么是堆:堆数据结构是一种数组对象,它可以被视为一科完全二叉树结构。它的特点是父节点的值大于(小于)两个子节点的值(分别称为大顶堆和小顶堆)。它常用于管理算法执行过程中的信息,应用场景包括堆排序,优先队列等。什么是最大堆:最大堆是堆的两种形式之一。根结点(亦称为堆顶)的关键字是堆里所有结点关键字中最大者,称为大根堆,又称最大堆(大顶堆)。大根堆要求根节点

2016-08-05 18:08:22 704

原创 多括号匹配——栈的应用

EOF    ctrl+z    停止        EOF为计算机术语End Of File的缩写。在操作系统中表示资料源无更多的资料可读取。资料源通常称为档案或串流。在C标准库中,像getchar这样的数据读取函数返回一个与符号(宏)EOF相等的值来指明文件结束的情况发生,EOF的真实值与不同的平台有关(但通常是-1,比如在glibc中),并且不等于任何有效的字符代码。块读取函数返回读取的

2016-08-04 17:10:32 957

原创 适用于外查找的平衡树——B树

什么是B树:        1970年,R.Bayer和E.mccreight提出了一种适用于外查找的树,它是一种平衡的多叉树,称为B树(或B-树、B_树)。在B-树中查找给定关键字的方法是,首先把根结点取来,在根结点所包含的关键字K1,…,kj查找给定的关键字(可用顺序查找或二分查找法),若找到等于给定值的关键字,则查找成功;否则,一定可以确定要查的关键字在某个Ki或Ki+1之间,于是取Pi

2016-08-02 23:44:59 825

原创 小米面试题——并查集(关于朋友圈问题)

假如已知有n个人和m对好友关系(存于数字r)。如果两个人是直接或间接的好友(好友的好友的好友...),则认为他们属于同一个朋友圈,请写出程序求出这n个人里一共有多少朋友圈。   例如:n=5,m=3,r={{1,2},{2,3},{4,5}},表示有5个人,1和2是好友,2和3是好友,4和5是好友。则1,2,3属于一个朋友圈,4,5属于另一个朋友圈,结果为两个朋友圈在处理这道题的时

2016-08-02 19:29:11 1173

原创 STL——迭代器失效

迭代器失效:        指向不再存在的元素的迭代器。无效迭代器的使用未定义,可能会导致严重的运行错误。        众所周知当使用一个容器的insert或者erase函数通过迭代器插入或删除元素"可能"会导致迭代器失效,因此很多建议都是让我们获取insert或者erase返回的迭代器,以便用重新获取新的有效的迭代器进行正确的操作迭代器失效的类型了:  1.由于容器

2016-08-01 15:13:51 448

原创 STL——迭代器的初步认识

什么是迭代器:          迭代器()是一种对象,它能够用来遍历标准模板库容器中的部分或全部元素,每个迭代器对象代表容器中的确定的地址。迭代器修改了常规指针的接口,所谓迭代器是一种概念上的抽象:那些行为上像迭代器的东西都可以叫做迭代器。然而迭代器有很多不同的能力,它可以把抽象容器和通用算法有机的统一起来。         迭代器是个所谓的智能指针,具有遍历复杂数据结构的能力。

2016-08-01 13:59:50 287

空空如也

空空如也

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

TA关注的人

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