数据结构
文章平均质量分 82
TheSoundOfWA
如果快乐是一种发明,它很容易被一再发明 || 让我们一起努力学习吧
展开
-
STL vector
【代码】STL vector。原创 2023-07-13 13:47:34 · 30 阅读 · 0 评论 -
栈和队列
stack是一种后进先出的容器结构,准确来说stack并不是容器,而是一种容器适配器(对特定类封装作为其底层的容器)。队列是一种后进后出的容器适配器结构,标准容器类deque和list满足其要求。默认情况下,如果没有为queue实例化指定容器类,则使用标准容器deque(双端队列)。优先队列是一种容器适配器,根据严格的弱排序标准(默认情况),它的第一个元素总是它所包含的元素中最大的。简单来说,priority_queue类似于数据结构中的堆,其使用与实现也和堆(Heap)并无二异。原创 2023-07-13 11:52:53 · 40 阅读 · 0 评论 -
STL map
map 是 C++ STL(标准模板库)的一部分。map是存储排序的键值对的关联容器,其中每个键都是唯一的,可以插入或删除,但不能更改。但是与键关联的值可以更改。原创 2023-07-13 09:36:57 · 42 阅读 · 1 评论 -
STL set
include <set> // set属于std命名域的,因此需要通过命名限定,例如using std::set;// 定义一个int类型的集合a // set<int> a(10);// error,未定义这种构造函数 // set<int> a(10, 1);// error,未定义这种构造函数 set < int > b(a);// 定义并用集合a初始化集合b set < int > b(a . begin() , a . end());// 将集合a中的所有元素作为集合b的初始值。原创 2023-07-13 09:10:28 · 46 阅读 · 1 评论 -
链表
包含单链表,双链表,循环单链表,实际应用中的功能不同,但实现方式都差不多。单链表就像是美国男篮,一代一代往下传;双链表像是中国男足,你传球给我,我传球给你,最终传给了守门员;循环链表就像是中国男篮,火炬从姚明传给王治郅,王治郅传给易建联,现在易建联伤了,又传给了姚明单链表是指结点中只有一个指向其后继的指针,具有单向性,但是有时需要搜索大量数据的时候,就需要多次进行从头开始的遍历,这样的搜索就不是很高效了。原创 2023-07-12 10:37:24 · 43 阅读 · 1 评论 -
并查集
并查集的重要思想在于,。我曾看过一个有趣的比喻,把集合比喻成,而代表元素则是。接下来我们利用这个比喻,看看并查集是如何运作的。最开始,所有大侠各自为战。他们各自的帮主自然就是自己。(对于只有一个元素的集合,代表元素自然是唯一的那个元素)现在1号和3号比武,假设1号赢了(这里具体谁赢暂时不重要),那么3号就认1号作帮主*(合并1号和3号所在的集合,1号为代表元素)*。现在2号想和3号比武*(合并3号和2号所在的集合),但3号表示,别跟我打,让我帮主来收拾你(合并代表元素)*。原创 2023-06-01 17:05:27 · 40 阅读 · 0 评论 -
双指针
当遇到有序数组时,应该优先想到双指针来解决问题,因两个指针的同时遍历会减少空间复杂度和时间复杂度。原创 2023-05-28 10:45:48 · 66 阅读 · 0 评论 -
单调队列
单调队列从字面上看,无非就是有某种单调性的队列,没错,这就是所谓的单调队列。i=7->{ 8,9, 10}(表示i=6,时,在其范围内最小的值为8)-> 3比单调队列为{ 8,9, 10} 的任意值都小,故全out,最终集合为 { 3 };i=5-> {6, 8 , 12}(表示i=4,时,在其范围内最小的值为6)-> 9比12小,12out,9比8大,9进 {6,8, 9};i=6-> {6,8, 9} 但是 单调队列中元素6的下标是2,不在(2, 6],中,故6 out,这就是单调队列的精髓了。原创 2023-05-28 09:49:52 · 30 阅读 · 0 评论 -
双端队列
通常队列的内部采用数组来实现,为了充分利用数组空间,使用%来实现逻辑上的循环数组,如下图所示。//统计队列是否为满或者队列是否为空 public T [ ] list;} }原创 2023-05-26 20:37:11 · 102 阅读 · 1 评论