使用LinkedList模拟一个堆栈或者队列数据结构

来源:互联网 发布:骚扰电话黑名单数据库 编辑:程序博客网 时间:2024/05/16 17:32

LinkedList特有方法:

addFirst();addLast();getFirst();getLast();

获取元素但不删除元素。如果集合中没有元素会会出现NoSuchElementException.
(JDK 1.6 出现替代方法offerFirst(),offLast();peekFirst(),peekLast()。集合中没有元素会返回Null)

removeFirst();removeLast();

获取元素,但是元素被删除。如果集合中没有元素会出现NoSuchElementException.
(JDK 1.6 出现替代方法poolFirst(),poolLast()。集合中没有元素会返回Null)

队列数据结构:先进先出,如同一个水管

import java.util.*;public class LinkedListDemo {    public static void main(String[] args) {        // TODO Auto-generated method stub        LinkedList<String> link=new LinkedList<String>();        link.addFirst("java01");        link.addFirst("java02");        link.addFirst("java03");        link.addFirst("java04");        sop(link);        while(!link.isEmpty())        {            sop(link.removeLast());        }    }    public static void sop(Object obj)    {        System.out.println(obj);    }}

运行结果:
这里写图片描述
加入取出元素代码

link.getFirst();

则会出现NoSuchElementException,表示集合中没有元素会出现
这里写图片描述

堆栈数据结构:先进后出,如同一个杯子
只需将如上代码中while循环中removeLast()改为removeFirst()即可。如下:

import java.util.*;public class LinkedListDemo {    public static void main(String[] args) {        // TODO Auto-generated method stub        LinkedList<String> link=new LinkedList<String>();        link.addFirst("java01");        link.addFirst("java02");        link.addFirst("java03");        link.addFirst("java04");        sop(link);        while(!link.isEmpty())        {            sop(link.removeFirst());        }        link.getFirst();    }    public static void sop(Object obj)    {        System.out.println(obj);    }}

运行结果:
这里写图片描述

或者可以封装为以下代码:

import java.util.*;class DuiLie{    private LinkedList<String> link;    DuiLie()    {        link=new LinkedList<String>();    }    public void myadd(String s)    {        link.addFirst(s);    }    public Object myget()    {        return link.removeLast();//FIFO,队列        //return link.removeFirst();//先进后出,堆栈    }    public boolean isNull()    {        return link.isEmpty();    }}public class LinkedListTest {    public static void main(String[] args) {        // TODO Auto-generated method stub        DuiLie d1=new DuiLie();        d1.myadd("java01");        d1.myadd("java02");        d1.myadd("java03");        d1.myadd("java04");        while(!d1.isNull())        {            System.out.println(d1.myget());        }    }    public static void sop(Object obj)    {        System.out.println(obj);    }}
0 0
原创粉丝点击