栈(stack)
又叫堆栈
是一种容器,可存入数据元素、访问元素、删除元素,它的特点在于只能允许在容器的一端进行加入数据(push)和输出数据(pop)的运算。保证任何时候可以访问、删除的元素都是此前最后存入的那个元素,确定了一种默认的访问顺序。
操作
- 加入数据(push)
- 输出数据(pop)
队列(QUEUE)
队列跟堆栈的概念其实还是挺相似的,队列他就是只允许你从一段添加从另一端取出。同栈一样,可以由线性表来实现。
一个队列应该包含的操作有:
- Queue() 创建一个空的队列
- enqueue(item) 往队列中添加一个item元素
- dequeue() 从队列头部删除一个元素
- isEmpty() 判断一个队列是否为空
- size() 返回队列的大小
双端队列
双端队列是一种具有队列和栈的性质的数据结构。
双端队列中的元素可以从两端弹出,其限定插入和删除操作在表的两端进行。双端队列可以在队列任意一端入队和出队。
其实它可以看成是两个栈的栈底挨在一起。
双端队列的操作:
- Deque() 创建一个空的双端队列
- addFront(item) 从队头加入一个item元素
- addRear(item) 从队尾加入一个item元素
- removeFront() 从队头删除一个item元素
- removeRear() 从队尾删除一个item元素
- isEmpty() 判断双端队列是否为空
- size() 返回队列的大小
由此可看 他们之间的区别是:
- 堆栈式FILO的(先进后出);
- 队列是FIFO的(先进先出);
在java中
堆是内存中实际存储数据的地方
栈是内存中存储数据地址的地方
不相干的东西,不要混淆,闹出笑话
网友评论