随笔分类 -  数据结构

摘要:树是一种递归定义的数据结构,如果树中节点的各子树从左到右是有次序的,不能互换,则称该树为有序树,否则叫无序树。 关于树的节点: 节点拥有的子树的个数叫做节点的度 如果度为0,那么该节点叫做叶节点或终端节点,除了根节点外的分支节点称为内部节点 树的度是各节点度的最大值。节点的子树的根称为该节点的子节点 阅读全文
posted @ 2023-04-26 08:56 N3ptune 阅读(421) 评论(3) 推荐(0)
摘要:队列是先进先出的线性表 顺序队列 顺序存储,使用一段连续的内存空间去依次存储队列中的数据 代码实现: #include <iostream> #define MaxSize 10 template <typename T> class SeqQueue { public: SeqQueue(); ~ 阅读全文
posted @ 2023-04-24 17:55 N3ptune 阅读(66) 评论(0) 推荐(0)
摘要:栈是一种受限的线性表,将允许插入和删除的操作的一端称为栈顶,另一端称之为栈底,向栈中插入元素叫入栈,删除元素叫出栈。栈被称为是后进先出的线性表(LIFO) 顺序栈 顺序存储,即使用一段连续内存空间依次存储栈中数据。这里通过一维数组动态分配内存的方式保存数据 定义 代码如下: #define Init 阅读全文
posted @ 2023-04-23 18:17 N3ptune 阅读(236) 评论(0) 推荐(0)
摘要:单模式串匹配算法、多模式匹配算法 strings.Index(text, pattern) BF算法 BF=Brute Force,暴力匹配算法,最坏情况时间复杂度为O(n*m),实际上是在主串中检查起始位置分别是0、1、2...n-m且长度为m的n-m+1个子串,查看有无与模式匹配的 func B 阅读全文
posted @ 2023-02-09 16:57 N3ptune 阅读(102) 评论(0) 推荐(0)
摘要:快速排序、归并排序、整数二分查找、浮点数二分查找 快速排序 主要思想是分治: 确定分界点 调整范围 递归处理左右两段 代码: #include <iostream> using namespace std; const int N = 1e6+10; int n,q[N]; void quick_s 阅读全文
posted @ 2022-12-20 12:49 N3ptune 阅读(39) 评论(0) 推荐(0)
摘要:优美子数组 将输入的数组逐个取模,得到一个新的数组,计算其前缀和数组 子数组(i到j)中如果恰好有K个1,即和为K,那么这个数组就满足了题目要求,有K个奇数数字 转化: sum[i] - sum[j] == k 等价于 sum[j] == sum[i]-k 此时遍历每一个i,统计j的个数即可 cla 阅读全文
posted @ 2022-11-13 19:38 N3ptune 阅读(30) 评论(0) 推荐(0)
摘要:顺序表是在计算机内存中以数组的形式保存的线性表,线性表的顺序存储是指用一组地址连续的存储单元依次存储线性表中的各个元素、使得线性表中在逻辑结构上相邻的数据元素存储在相邻的物理存储单元中,即通过数据元素物理存储的相邻关系来反映数据元素之间逻辑上的相邻关系,采用顺序存储结构顺序存储结构的线性表通常称为顺 阅读全文
posted @ 2022-07-12 12:32 N3ptune 阅读(84) 评论(0) 推荐(0)