数据结构
无
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 · 244 阅读 · 0 评论 -
二叉树的遍历
完全二叉树的性质i>1的节点,其父节点为i/2如果2i>k,那么i没有孩子;如果2i+1>k,那么i没有孩子如果节点i有孩子,那么它的左孩子是2i,右孩子是2i+1二叉树的三种遍历方法先序遍历:按父节点、左儿子、右儿子的顺序进行访问。中序遍历:按左儿子、父节点、右儿子的顺序进行访问。后序遍历:按左儿子、右儿子、父节点的顺序进行访问。中序遍历+先序遍历 或者 中序遍历+后序遍历 都能确定一棵树。但只有 先序遍历+后续遍历 不能确定一棵树。例题 (hdu1710)原创 2020-09-17 10:30:02 · 252 阅读 · 0 评论 -
STL容器用法总结
vector 向量、pair、string 字符串、stack 栈、queue 队列、deque 双向队列、priority_queue 优先队列(堆)、set/multiset/unordered_set、map/multimap/unordered_map原创 2020-05-11 20:53:54 · 1002 阅读 · 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 · 658 阅读 · 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 · 253 阅读 · 0 评论