【算法——数据结构】:栈、队列、kmp、查并集

发布于:2023-01-18 ⋅ 阅读:(197) ⋅ 点赞:(0)

 

一、栈

1.相关语法

 s.top()  取栈顶元素       s.pop()   出栈         s.push(num)  入栈

  s.empty()  判空             s.size()  大小

2.

 中缀转后缀

①遇到数字直接加入表达式

②遇到运算符,入栈时,先看如果站内有优先或者等于当前运算符级别的,就先弹出,之后再将当前运算符压入站内

③遇到左括号:直接压入栈内

④遇到右括号:将栈内运算符弹出直到遇到左括号为止。

⑤最后将所有符号加入表达式

计算时:

①遇到数字:直接入栈

②遇到操作符:弹出前两个数,计算之后压入栈中(注意后弹出的要在前,先弹出的要在后)

二、队列

 1.先进先出

2.相关语法

q.front()  取队顶元素       q.pop()   出队       q.push(num)  入队

q.empty()  判空               size  = q.size()  大小

 

三、kmp

1.是一种改进的字符串匹配算法。文本字符串设为s[i],模板字符串设为p[j],

2.i=i-j+1:就是让文本字符串,回到已经移动了这么多格的位置

        也就是说,我们不想移动i,我们修改模板字符串j的位置,但是j的数值也不是随便改变的。

 文章链接:KMP

四、查并集

1.将两个集合合并

2.询问两个元素是否在一个集合当中

基本原理:每个集合用一颗树来表示,树根的编号就是整个集合的编号。每个节点存储它的父节点,p[x]表示x的父节点

本文含有隐藏内容,请 开通VIP 后查看