专栏首页国产程序员ArrayList和LinkedList分别实现堆栈和队列对比

ArrayList和LinkedList分别实现堆栈和队列对比

队列(Queue)是限定所有的插入只能在表的一端进行,而所有的删除都在表的另一端进行的线性表。 表中允许插入的一端称为队尾(Rear),允许删除的一端称为队头(Front)。按先进先出(FIFO)的原则进行的。

ArrayList的方式实现队列:

/** * Created with IntelliJ IDEA. * User: lida * Date: 2018/6/6 * ArrayList的方式实现队列

*/ public class MyQueue { private ArrayListlist = new ArrayList(); //入队 public void push(Object o){ list.add(o); } //出队 public void pop(){ Object o=null; if(!list.isEmpty()){ for (Objectobj : list) { System.out.println(obj); } }else{ return; } } //获取队列长度 public int getMyQueueLength(){ return list.size(); } //判断队列是否未空 public boolean isMyQueueEmpty(){ return list.isEmpty(); } public static void main(String[] args) { MyQueue myQueue=new MyQueue(); myQueue.push("1"); myQueue.push("2"); myQueue.push("3"); myQueue.pop(); } }

LinkedList的方式实现队列:

/** * Created with IntelliJ IDEA. * User: lida * Date: 2018/6/6 * linkedList的方式实现队列 */ public class MyQueue { LinkedList<Object> linkedList=new LinkedList<Object>(); //入队 public void push(Object o){ linkedList.addLast(o); } //出队 public Object pop(){ return linkedList.removeFirst(); } public Objectpeek(){ return linkedList.getFirst(); } //判断队列是否未空 public boolean isMyQueueEmpty(){ return linkedList.isEmpty(); } public static void main(String[] args) { MyQueue myQueue=new MyQueue(); myQueue.push("1"); myQueue.push("2"); myQueue.push("3"); myQueue.pop(); System.out.println(myQueue.peek()); System.out.println(myQueue.isMyQueueEmpty()); } }

栈(Stack)也是一种特殊的线性表,是一种后进先出(LIFO)的结构。 栈是限定仅在表尾进行插入和删除运算的线性表,表尾称为栈顶(top)表头称为栈底(bottom)。

用LinkedList实现堆栈

/** * Created with IntelliJ IDEA. * User: lida * Date: 2018/6/6 * To change this template use File |Settings | File Templates. */ public class MyStack { LinkedList<Object> linkedList=new LinkedList<Object>(); //入栈 public void push(Object o){ linkedList.add(o); } //出栈 public Object pop(){ return linkedList.remove(); } //查看栈顶元素 public Object peek(){ return linkedList.getFirst(); } //判断是否为空 public boolean isMyStackEmpty(){ return linkedList.isEmpty(); } public static void main(String[] args) { MyStack myStack=new MyStack(); myStack.push("1"); myStack.push("2"); myStack.push("3"); myStack.push("4"); System.out.println(myStack.peek()); myStack.pop(); System.out.println(myStack.peek()); myStack.pop(); myStack.pop(); myStack.pop(); System.out.println(myStack.isMyStackEmpty()); } }

用ArrayList实现堆栈

/** * Created with IntelliJ IDEA. * User: lida * Date: 2018/6/6 * To change this template use File |Settings | File Templates. */ public class MyStack { private ArrayListlist=new ArrayList(); //入栈 public void push(Object o){ list.add(o); } //出栈 public void pop(){ Object o=null; if(!list.isEmpty()){ o=list.get(list.size()-1); System.out.println(o); list.remove(o); }else{ return; } } //判断是否为空 public boolean isMyStackEmpty(){ return list.isEmpty(); } public static void main(String[] args) { MyStack myStack=new MyStack(); myStack.push("1"); myStack.push("2"); myStack.push("3"); myStack.push("4"); //myStack.pop();//输出一个 while (!myStack.isMyStackEmpty()){ myStack.pop();//输出全部 } System.out.println(myStack.isMyStackEmpty()); } }

本文分享自微信公众号 - 国产程序员(Monday_lida),作者:Monday

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-06-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • SQL优化

    例:select *from tempagreement where rownum<10;

    一觉睡到小时候
  • 数据库—索引

    适当的使用索引可以提高数据检索速度,可以给经常需要进行查询的字段创建索引 oracle的索引分为5种:唯一索引,组合索引,反向键索引,位图索引,基于函数的索引...

    一觉睡到小时候
  • 面向对象的7种设计原则(5)-里氏代换原则

    里氏代换原则(Liskov Substitution Principle LSP)面向对象设计的基本原则之一。里氏代换原则中说,任何基类可以出现的地方,子类一定...

    一觉睡到小时候
  • Android MVP 构架初试

    目前讨论MVP MVVM 的架构也来越多,这种构架也很适合Android。研究MVP记录如下

    Javen
  • Java 设计模式系列(4) —— 工厂模式

    工厂模式用于实现逻辑的封装,并通过公共的忌口提供对象的实例化服务,在添加新类时只需要做少量的修改。

    求和小熊猫
  • 使用iText5来处理PDF

    项目要求,通过pdf模板,把用户提交的数据保存到一个PDF文件中。其中有文字内容,也有图片。之前选了aspose.pdf,因为抠门,不能花钱买,就从网上找的的开...

    徐大嘴
  • Decorator装饰者模式(结构型模式)

    假设让我们去设计FCL中的Stream类,该类具有流类的基本功能,除了有各种不同类型的流外(如内存流、文件流、网络流等等),但是在不同的业务场景下,如处理银行业...

    郑小超.
  • C# http Get/POST请求封装类

    http://www.sufeinet.com/thread-3-1-1.html

    跟着阿笨一起玩NET
  • 见到了“公司”定义一个Company类,那么见到了“字段”是不是也可定义一个Column类?

      既然见到了公司,我们可以定义一个Class Company ,那么我们见到了字段,是不是也可以定义一个Class ColumnInfo呢? 公司的描述信息类...

    用户1174620
  • 设计模式入门:抽象工厂模式

      抽象工厂用于提供创建一系列相关或互相依赖的接口,而无需指定它们具体的类。对比工厂方法,抽象工厂面对的是整个产品族,而工厂方法面对的是独立的产品。

    happyJared

扫码关注云+社区

领取腾讯云代金券