栈和队列
2016-07-22 12:11
197 查看
一.栈(stack先进后出)
栈只允许访问一个数据项:即最后插入的数据项。移除这个数据项才能访问倒数第二个插入的数据项,依次类推。这种机制在不少编程环境中都非常有用。比如按规则解析字符串等。
生活中有人收到信后,会随手把它放在桌子上的信堆上,等到他们有空闲的时候,就从上到下依次处理信件,每次都拿堆叠在最上层的那一封。第一封处理完了,就处理第二封,直到最后轮到处理信堆最下面的一张(此时它在信堆的最上面)。只有能在合理时间内处理完所有信件,这种“优先处理最上层信件”的方法才不会产生麻烦。否则,会发生接连几个月也处理不到压在堆底信件的危险!
![](http://r.photo.store.qq.com/psb?/V135aEpR3tl3zj/8*rEb1rKTGUCc2YxKCFsnMzTu7ZKZNVwBSGuT2wDboI!/o/dAwBAAAAAAAA&ek=1&kp=1&pt=0&bo=VgL.AVYC*gEDACU!&su=1236219121&sce=0-12-12&rf=2-9)
栈工作示意图
栈中主要方法:
push(Object obj):入栈。入栈的数据项放在栈顶
pop(); 出栈。出栈的数据从栈顶拿。
peek():获取栈顶元素而不出栈 。
栈应用简单实例:字符串逆转,分隔符匹配。如:a{b(c)},后出现的左分隔符(左括号)要比先出现的(左大括号)先完成匹配。+
二.队列
队列是一种数据结构,有点类似栈,但是队列中第一个插入的元素也会最先被移除(先进先出,FIFO)
栈只允许访问一个数据项:即最后插入的数据项。移除这个数据项才能访问倒数第二个插入的数据项,依次类推。这种机制在不少编程环境中都非常有用。比如按规则解析字符串等。
生活中有人收到信后,会随手把它放在桌子上的信堆上,等到他们有空闲的时候,就从上到下依次处理信件,每次都拿堆叠在最上层的那一封。第一封处理完了,就处理第二封,直到最后轮到处理信堆最下面的一张(此时它在信堆的最上面)。只有能在合理时间内处理完所有信件,这种“优先处理最上层信件”的方法才不会产生麻烦。否则,会发生接连几个月也处理不到压在堆底信件的危险!
栈工作示意图
栈中主要方法:
push(Object obj):入栈。入栈的数据项放在栈顶
pop(); 出栈。出栈的数据从栈顶拿。
peek():获取栈顶元素而不出栈 。
栈应用简单实例:字符串逆转,分隔符匹配。如:a{b(c)},后出现的左分隔符(左括号)要比先出现的(左大括号)先完成匹配。+
二.队列
队列是一种数据结构,有点类似栈,但是队列中第一个插入的元素也会最先被移除(先进先出,FIFO)
相关文章推荐
- C#线程队列用法实例分析
- 算法系列15天速成 第九天 队列
- C++基于栈实现铁轨问题
- C语言单链队列的表示与实现实例详解
- 浅析C语言中堆和栈的区别
- C语言栈的表示与实现实例详解
- C语言实现颠倒栈的方法
- 算法系列15天速成 第十天 栈
- mysql 队列 实现并发读
- C#队列Queue用法实例分析
- C#多线程处理多个队列数据的方法
- C语言循环队列的表示与实现实例详解
- C++循环队列实现模型
- C#内置队列类Queue用法实例
- 一看就懂:图解C#中的值类型、引用类型、栈、堆、ref、out
- Array栈方法和队列方法的特点说明
- C#通过链表实现队列的方法
- java数据结构之java实现栈
- C#队列Queue多线程用法实例
- JAVA 虚拟机 栈