黑马程序员技术交流社区
标题:
堆栈、队列有什么特点和区别?可以用程序模拟下吗?
[打印本页]
作者:
杜工
时间:
2014-8-20 22:34
标题:
堆栈、队列有什么特点和区别?可以用程序模拟下吗?
本帖最后由 杜工 于 2014-8-22 08:02 编辑
如题:堆栈、队列有什么特点和区别?
谁可以形象化说明下,或者用程序模拟下这几种数据结构吗?
作者:
masai158
时间:
2014-8-20 23:23
本帖最后由 masai158 于 2014-8-20 23:29 编辑
堆栈(先进后出)
队列(先进先出)
import java.util.ArrayList;
import java.util.List;
public class Demo {
public static void main(String[] args)
{
ArrayList aList = new ArrayList();
aList.add(32132);
aList.add("fws4");
aList.add("vsw");
stack(aList);
System.out.println("————————————————");
queue(aList);
}
public static void stack(List aList)// 队列
{
for(int i=0; i<aList.size(); i++)
{
System.out.println(aList.get(i));
}
}
public static void queue(List aList)//堆栈
{
for(int i=aList.size()-1; i>=0; i--)
{
System.out.println(aList.get(i));
}
}
}
复制代码
List 简单模拟
作者:
晓风
时间:
2014-8-20 23:47
堆栈的特点是:压栈,类似于水缸(先进后出);
队列的特点是:类似于水管,(先进先出)。
用程序模拟的话, 就是用LinkedList集合的添加分别用addFirst方法和addLast方法,
获取分别用:getFirst方法和getLast方法操作。
示例代码如下
/**
* 模拟堆栈
* @author wuyong
*
*/
class Stack{
public Stack(){
add();
}
LinkedList<String> stack = new LinkedList<String>();
int no;//元素的顺序从1开始
public String get(){
return stack.getFirst();
}
public void add() {
while (no < 4) {
stack.addFirst("stack" + ++no);
}
}
}
/**
* 模拟队列
* @author wuyong
*
*/
class Queue{
public Queue(){
add();
}
LinkedList<String> queue = new LinkedList<String>();
int no;//元素的顺序从1开始
public String get(){
return queue.getFirst();
}
public void add() {
while (no < 4) {
queue.addLast("stack" + ++no);
}
}
}
复制代码
作者:
杜工
时间:
2014-8-21 06:56
masai158 发表于 2014-8-20 23:23
堆栈(先进后出)
队列(先进先出)
强大,谢谢。
作者:
皮三藏
时间:
2014-10-22 20:56
之前有人总结:栈是吃多了吐出来,队列是吃多了拉出来,这样记就好记了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2