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

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);
    }

}
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值