![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
无
lwz_159
原acmer(已退役)
展开
-
AtCoder Beginner Contest 225 English D - Play Train(双链表)
题目描述 题目链接 题目大意 有n个点,每个点的编号为i。有3种,一共m个操作: 1)将y连到x的后面(保证x后面和y前面没有连点) 2)将x-y的连接断开(保证一定存在x-y的连接) 3)输出x所在的链(按顺序输出) 题目分析 设pre[x] //记录x的前驱节点,ne[x] //记录x的后继节点 这样我们连接/断开边时都只需要操作pre[]和ne[]数组即可。 输出x所在的链也只需要顺着链表往前和往后遍历即可。 代码如下 #include <iostream> #include <cs原创 2021-11-02 16:31:11 · 227 阅读 · 0 评论 -
二叉树的遍历
完全二叉树的性质 i>1的节点,其父节点为i/2 如果2i>k,那么i没有孩子;如果2i+1>k,那么i没有孩子 如果节点i有孩子,那么它的左孩子是2i,右孩子是2i+1 二叉树的三种遍历方法 先序遍历:按父节点、左儿子、右儿子的顺序进行访问。 中序遍历:按左儿子、父节点、右儿子的顺序进行访问。 后序遍历:按左儿子、右儿子、父节点的顺序进行访问。 中序遍历+先序遍历 或者 中序遍历+后序遍历 都能确定一棵树。 但只有 先序遍历+后续遍历 不能确定一棵树。 例题 (hdu1710)原创 2020-09-17 10:30:02 · 248 阅读 · 0 评论 -
STL容器用法总结
vector 向量、pair、string 字符串、stack 栈、queue 队列、deque 双向队列、priority_queue 优先队列(堆)、set/multiset/unordered_set、map/multimap/unordered_map原创 2020-05-11 20:53:54 · 974 阅读 · 1 评论 -
单链表、双链表、邻接表
总结一下数组模拟链表的一些基本用法。 一.单链表 每个节点都有一个next指针来指向下一个节点。 1.需要的变量/数组 int head; //表示头节点的下标 int e[N]; //表示节点i的值 int ne[N]; //ne[i]表示节点i的next指针 int tail; //tail当前储存已经用到了哪个点 2.初始化 //初始化 void init() { ...原创 2020-04-23 17:18:55 · 629 阅读 · 0 评论 -
KMP算法
简介 KMP算法是一种用来进行字符串匹配的算法。KMP算法的核心是利用next数组,尽量减少字符串匹配失败后重新匹配的次数,从而达到快速匹配的目的。KMP的时间复杂的为O(n+m)。 我们来举一个例子: 假设有两个字符串s1和s2,求s2是否为s1的子串。 暴力做法是将两个字符串逐一比对,如果有一个地方不同则重新进行匹配。 //暴力法 char s1[N],s2[N]; //N为常数 in...原创 2020-03-19 16:09:08 · 245 阅读 · 0 评论