数据结构
L19002S
需要内推网易,请私戳我
展开
-
【数据结构】--- c++中map与unordered_map的区别
c++中map与unordered_map的区别1.文档剖析2.头文件3.内部实现机理4.优缺点以及适用场景mapunordered_map1.文档剖析点击查看map文档点击查看unordered_map文档2.头文件map: #include < map >unordered_map: #include < unordered_map >3.内部实现机理m...原创 2020-05-01 19:42:42 · 602 阅读 · 1 评论 -
【数据结构】--- 手撕单链表反转
引言:今天面美团上来让手撕单链表反转,心中暗自窃喜,这么简单的算法,能到今天要起飞了吗,结果在牛客面试没给题目接口,让自己实现单链表,顿时心生畏惧,最近一直刷算法,实现单链表这不是闹呢吗,哎,结果可想而知,面试官说我基础不够扎实,现在咱还是乖乖实现一个打打基础吧。算法思想:思路其实很简单,保存好下一个节点,避免断开连接找不到下一个节点,然后把后一个解开链上前一个节点,然后把下一个节点赋给当前节...原创 2020-04-30 11:19:30 · 442 阅读 · 0 评论 -
【C++】---STL::vector和list的区别
【C++】—STL::vector和list的区别原创 2020-03-05 15:50:58 · 921 阅读 · 4 评论 -
【数据结构】---模拟实现搜索二叉树
【数据结构】—模拟实现搜索二叉树引言:随着数据结构STL学习的不断深入,我们已经了解了序列式容器vector,list,string等,接下来进入到关联式容器中。两者都被用来存储数据,与序列式容器的线性结构不同的是,其里面存储的是<key, value>结构的键值对,在数据检索时比序列式容器效率更高。根据应用场景的不同,STL总共实现了两种不同结构的管理式容器:树型结构与哈希结构。树...原创 2019-12-10 10:25:02 · 4007 阅读 · 3 评论 -
【数据结构】---模拟实现简单二叉树
【数据结构】—模拟实现二叉树引言:二叉树的提出给世界带来了很多的便利,但是作为数据结构重点和难点,想要完全弄透树还是很有挑战性的,STL中的map和set底层均为树型结构,还有数据结构公认难点红黑树和b树。今天我们来简单实现一个二叉树,从简单入手,摸清它。树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是...原创 2019-12-06 13:31:00 · 3950 阅读 · 4 评论 -
【数据结构】---模拟实现堆
【数据结构】—模拟实现堆引言:数据结构又一大重点结构堆,在后边的堆排序中我们会用到它。堆的定义:如果有一个关键码的集合K = {k0,k1, k2,…,kn-1},把它的所有元素按完全二叉树的顺序存储方式存储在一个一维数组中,并满足:Ki <= K2i+1 且 Ki<= K2i+2 (Ki >= K2i+1 且 Ki >= K2i+2) i = 0,1,2…,则称为...原创 2019-12-05 13:44:47 · 3868 阅读 · 2 评论 -
【数据结构】---模拟实现带头双向循环链表
【数据结构】—模拟实现带头双向循环链表引言:在前不久对单链表做了详细了解和代码实现后,今天我们继续来探索链表中最常用到之一的双向循环链表。[模拟实现单链表](https://blog.csdn.net/L19002S/article/details/102901883)带头双向循环链表:结构最复杂,一般用在单独存储数据。实际中使用的链表数据结构,都是带头双向循环链表。另外这个结构虽然结构复杂...原创 2019-12-04 16:39:28 · 3889 阅读 · 6 评论 -
【数据结构】--模拟实现队列
【数据结构】–模拟实现队列引言:队列(queue)作为数据结构又一大经典特殊线性结构,遵循先进先出,只允许在一端进行插入数据操作,在另一端进行删除数据操作的的特性。<queue>还是一个适配器类,底层默认为deque。在操作系统的生产者与消费者模型学习中,我们用到了环形队列。接下来我们一起探索一下它。如图:用数组实现一下:代码如下:queue.h#define _CRT_...原创 2019-11-19 22:00:29 · 3849 阅读 · 1 评论 -
【数据结构】---模拟实现栈
【数据结构】—模拟实现栈引言:栈作为一种经典的数据结构,是一种只能在一端进行插入和删除操作的特殊线性表,在C++的STL中也提供其接口<stack> ,直接提供了对栈操作的所有函数,在平时许多撸代码应用场景下非常实用且便捷。定义:栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素...原创 2019-11-16 11:20:12 · 2906 阅读 · 7 评论 -
【数据结构】--常见的七大经典排序
【数据结构】–常见的九大经典排序引言:作为数据结构又一大经典必考面试题,手撕排序算法题是很多人的噩梦,今天我们来认真梳理探索一下这九大经典算法。明其理,熟其用,穷其变。排序:排序是计算机内经常进行的一种操作,其目的是将一组“无序”的记录序列调整为“有序”的记录序列。分内部排序和外部排序,若整个排序过程不需要访问外存便能完成,则称此类排序问题为内部排序。反之,若参加排序的记录数量很大,整个序列的...原创 2020-05-01 19:27:17 · 1756 阅读 · 10 评论 -
【数据结构】---模拟实现单链表(C语言)
【数据结构】—模拟实现单链表(C语言)引言:单链表作为数据结构中非常重要的链式存取结构因为其支持尾插尾删,头插头删,且支持任意位置插入删除的优良特性被广泛应用于许多场景,当然也在面试和笔试中常常被点击。它在物理存储结构上非连续、非顺序,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。定义(两种):无头单向非循环链表:结构简单,一般不会单独用来存数据。实际中更多是作为其他数据结构的子结...原创 2019-11-04 18:24:27 · 2862 阅读 · 5 评论 -
【数据结构】---模拟实现顺序表(C语言)
【数据结构】—模拟实现顺序表(C语言)引言:顺序表是数据结构的一种简单线性结构,在学习过程中,刚从C语言过渡到数据结构,承前启后,既考验C语言语法功底,又考验了对数据结构入门知识的了解。定义:顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。顺序表一般可以分为:静态顺序表:使用定长数组存储。#define N 100...原创 2019-11-02 16:01:50 · 2873 阅读 · 2 评论 -
【数据结构】---时间复杂度与空间复杂度
【数据结构】–时间复杂度与空间复杂度引言:一个算法的优劣主要取决于执行时间和所占用的存储空间,即时间复杂度T(n)和空间复杂度S(n)。一、O渐进表示法(重点)1.定义:在一个算法语句总的执行次数总是关于问题规模N的某个函数,我们把它记为f(N),N称为问题的规模。语句总的执行次数记为T(N),当N不断变化是,T(N)也在变化,算法执行次数的增长速率和f(N)的增长速率相同。则有T(N)=O...原创 2019-11-01 22:18:02 · 2956 阅读 · 3 评论 -
【数据结构】--- kmp算法和strstr函数
kmp算法和strstr函数注:现实生活中,字符串匹配在很多的应用场景里都有着极其重要的作用,包括生物信息学、信息检索、拼写检查、语言翻译、数据压缩、网络入侵检测等等,至此诞生了很多的算法,那么我们今天就来探索这两种经典的算法。一、概念分析首先我们需要了解到什么是kmp算法和strstr函数概念如下:KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R....原创 2019-10-25 17:19:12 · 5751 阅读 · 6 评论