基础知识--绪论
绪论 数据结构 数据结构是一门研究非数值计算程序设计中的操作对象,以及这些对象之间的关系和操作的学科。 逻辑结构 线性结构 一般线性表:线性表 特殊线性表:栈、队列、字符串 线性表的推广:数组、广义表 非线性结构 树结构:树、二叉树 图结构:有向图、无向图 集合结构 存储结构 顺序存储 逻辑上连续,物理上连续 优点: 随机访问高效:通过下标可直接访问元素,时间复杂度为 O(1)。 内存连续,缓存友好:数据连续存放,充分利用 CPU 缓存机制,访问效率高。 空间开销小:仅需存储数据,无需额外指针字段,内存利用率高。 缺点: 插入/删除效率低:在中间或头部操作时,需移动大量元素,时间复杂度为 O(n)。 固定容量:需预先分配连续内存空间,扩容需复制全部数据,动态扩展成本高。 内存浪费:若预分配空间过大,可能造成内存冗余。 链式存储 逻辑上不要求连续,物理上⼀定连续 优点: 动态内存分配:无需预先分配固定空间,按需动态扩展,内存利用率高。 插入/删除高效:仅需修改指针指向,时间复杂度为...
代码随想录--二叉树
代码随想录--二叉树(3)
代码随想录--二叉树
代码随想录--二叉树(2)层序遍历
代码随想录--二叉树
代码随想录--二叉树(1)前中后序遍历
基础知识--STL
标准模板库(STL) STL 即标准模板库(Standard Template Library),是 C++ 标准库的一部分,里面包含了一些模板化的通用的数据结构和算法。由于其模板化的特点,它能够兼容自定义的数据类型,避免大量的造轮子工作。NOI 和 ICPC 赛事都支持 STL 库的使用,因此合理利用 STL 可以避免编写无用算法,并且充分利用编译器对模板库优化提高效率。 STL容器 迭代器 在 STL 中,迭代器(Iterator)用来访问和检查 STL 容器中元素的对象,它的行为模式和指针类似,但是它封装了一些有效性检查,并且提供了统一的访问格式。 迭代器听起来比较晦涩,其实迭代器本身可以看作一个数据指针。迭代器主要支持两个运算符:自增 (++) 和解引用(单目 * 运算符),其中自增用来移动迭代器,解引用可以获取或修改它指向的元素。 12345678vector<int> data(10);//下面两个 for 循环的效果是一样的for (int i = 0; i < data.size(); i++) cout <<...
代码随想录--栈·队列
代码随想录--栈·队列
代码随想录--字符串
代码随想录--字符串
代码随想录--哈希表
代码随想录--哈希表(下)
代码随想录--哈希表
代码随想录--哈希表(上)
基础知识--哈希表
哈希表 哈希表概述 哈希表:又称散列表,一种以关键码的值「key-value」而直接进行访问的数据结构。任意的键值 key 都唯一对应到内存中的某个位置。只需要输入查找的键值,就可以快速地找到其对应的 value。 哈希函数:根据键值计算索引的函数就叫做哈希函数。 **冲突:**不同的关键码映射到同一散列位置。key1!=key2,但是H(key1)=H(key2)。 **同义词:**具有相同函数值的多个关键字。 All in all: 将元素通过一个函数转换为整数,使得该整数可以尽量唯一地代表这个元素 。 **需要解决的问题:**1. 哈希函数的构造。 2. 冲突解决的方法。 哈希函数构造方法 哈希函数应当易于计算,并且尽量使计算出来的索引均匀分布,以避免冲突。 直接定址法 **概述:**直接取关键字的某个线性函数值为哈希函数。 **哈希函数:**H(key) = key 或 H(key) = a*key + b ( a和b为常数...


