面试题:队列和栈区别 (百度面试题)
面试题:使用两个栈实现队列(百度面试题)
面试题:两个栈实现最小值栈(百度面试题)
面试题:链表倒数第k个数(360面试题)
一、区别:
1、栈的插入和删除操作只允许在表的尾端进行(在栈中成为“栈顶”),满足“FIFO:First In Last Out”;
队列只允许在表尾插入数据元素,在表头删除数据元素,满足“First In First Out”
2、遍历数据速度不同。栈只能从头部取数据,也就最先放入的需要遍历整个栈最后才能取出来,而且在遍历数据的时候还得为数据开辟临时空间,保持数据在遍历前的一致性。队列则不同,它基于地址指针进行遍历,而且可以从头或尾部开始遍历,但不能同时遍历,无需开辟临时空间,因为在遍历的过程中不影响数据结构,速度要快的多
二、使用两个栈实现队列:
我的这篇博客写了:剑指Offer(五)用两个栈实现队列(Java版 )
三、两个栈实现最小值栈:
public class MinStack {