使用LinkedList来模拟堆栈或队列数据结构

来源:互联网 发布:彩票pk10开奖网源码 编辑:程序博客网 时间:2024/05/17 10:39

     今天是10.3不管是不是假日,坐在实验室能学点东西那就是极好的,要是能加上打球那就是再好不过的了,这个在今天全都有了;今天过的也很是幸福。好的,开始技术。

     最近一直在学习集合,其中使用比较多的就是LinkedList,那么什么是LinkedList呢。在list中共有三种容器,LinkedList是容器的一种,具体介绍如下,

List:
|--Vector:组数据结构,是同步的(效率低,几乎不用),可增长。增删查询都很慢!
|--LinkedList:内部是数组数据结构,是不同步的(效率高),大小可变的,代替了Vector。查询速度快
|--ArrayList:内部是数链接列表实现(链表数据结构)。是不同步的(效率高),增删速度快。有角标,
但底层是链表结构

其中,LinkedList有很多方法,比如

getFirst(),if is empty ,throw NoSuchElementException
getLast(),if is empty ,throw NoSuchElementException

peekFirst(),if is empty ,return null
peekLast(),if is empty,return null;

removeFirst(),removeLast(), offerFirst(),offerLast() and so on~~~~

使用这些方法,就可以完成一个功能,使用LinkedList来模拟堆栈或队列数据结构,这也是笔试中的题,首先,什么是“堆栈或队列”呢。

/* * 请使用LInkedList来模拟堆栈或队列数据结构。 *  * 堆栈:后进先出 first in last out(FILO) *  * 队列:先进先出first in first out(FIFO) *  * 我们应该描述这样一个容器,给使用提供一个容器对象完成这两种结构中的一种 */
然后,如果是写一个队列的话,它得有自己的构造函数,当执行的时候可以自动创建一个LinkedList容器,还必须有添加、取出元素的功能,当然为了能取出元素,还必须有判断容器是否为空的函数,所以具体代码如下:

public class DuiLie {//能完成先进先出的效果private LinkedList link;public DuiLie(){link=new LinkedList();}/* * 队列添加元素的功能 */public void myAdd(Object obj){link.addLast(obj);}/* * 队列取出元素的功能 */public Object myGet(){return link.removeFirst();  //add和remove相反是队列,相同是堆栈}public boolean isNull(){return link.isEmpty();}}
当执行的时候,创建队列,然后添加元素,看输出顺序即可判断编程是否正确。
public class LinkedTest {public static void main(String[] args) {// TODO Auto-generated method stubDuiLie d1=new DuiLie();d1.myAdd("abc1");d1.myAdd("abc2");d1.myAdd("abc3");d1.myAdd("abc4");while(!d1.isNull()){System.out.println(d1.myGet());}}}

运行结果是:所以编程正确,哈哈!!




0 0
原创粉丝点击