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

 

一、栈

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的父节点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值