栈、队列与串

(一)栈(stack)
定义:是限定仅在表尾进行插入和删除的操作
(先进后出)
1、一般定义允许插入与删除的一端为栈顶(top),另一端为栈底。(bottom)
2、栈的插入称进栈、压栈、入栈。
栈的删除称出栈、弹栈。
解决栈空间浪费的操作有:两栈共享空间
3、栈的使用过程中元素变化不可预料,有时候很小或很大,最好是用链栈,反之则用顺序栈。
4、栈的应用:
①递归(Fibonacci)
Fibonacci一般的c语言实现代码(1):
C语言递归实现代码(2):
②四则运算表达式求值
一般运算都是中缀式,首先把中缀式转化为后缀式。然后通过两个栈完成数据的计算。

  栈的应用:浏览器历史记录,Android中的最近任务,    

  Activity的启动模式,cpu中栈的实现,word自动保存,
    
  解析计算式,解析xml/json

(二)队列(queue)
定义:只允许在一端进行插入操作,另一端进行删除操作。(先进先出的线性表)
循环队列:
把队列头尾相接的顺序存储结构。
判断队满与队空的条件。
链队列:入队,出队
考察重点:
循环队列判断队空队满
队空:front=rear
队满:(rear+1)mod(mixsize)
入队:(rear+1)%mixsize
出队:(front+1)%mixsize
队列长度:(rear-front+1)%mixsize

链接方式存储队列,进行删除运算时:
头尾指针可能都需要删除
有头结点的情况下,只需修改队头指针
若只有一个结点,该结点即是队头又是队尾,则需要都动

适合建立优先级队列:堆
适合处理函数调用:堆栈

(三)串(string)
定义:由零个或者多个字符组成的有限序列,又称字符串
应用主要有在串中在一个子串:
朴素的模式匹配算法(暴力查找算法)
KPL模式算法。
KPL模式算法改进。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值