美文网首页
根据LinkedList,来实现一个栈结构的集合

根据LinkedList,来实现一个栈结构的集合

作者: 帅气的猪猪 | 来源:发表于2016-09-11 17:51 被阅读232次

    首先,我们根据需求。了解到是要一个栈结构的集合,而且是根据LinkedList来创建的。所以我们这里首先要想到,栈的数据结构是什么呢?当然是:【先进后出】

    那么我们如何根据LinkedList创建一个栈结构的集合呢?我们可以想到的是自定义一个集合,根据LInkedList。

    • 自定义的栈集合
    public class MyStack {
    
    private LinkedList link;
    在MyStack创建时,及创建LinkedList链表集合,根据LinkedList集合特有方法去实现栈数据结构效果
        public MyStack() {
            link = new LinkedList();
    }
    LinkedList.addFirst()是实现先进后出的关键,该方法会把新添加进来的节点放置在第一个
    那么当你取数据时,也是从第一个提取了
        public void add(Object obj) {
            link.addFirst(obj);
    }
    link.getFirst只能返回第一个,而没有弹栈的效果。所以这里使用的是LinkedList.removeFirst
    那么这样提取数据,就有栈的弹栈效果了,取一个就删一个
        public Object get() {
            // return link.getFirst();
            return link.removeFirst();
    }
    并且封装了一个判断功能,用于遍历使用
        public boolean isEmpty() {
            return link.isEmpty();
    }
    

    OK,上面我们自己封装了一个基于LinkedList的栈数据结构代码,那么我们看看如何使用吧:

    • MyStack的测试

       public class MyStackDemo {
           public static void main(String[] args) {
       // 创建集合对象
       MyStack ms = new MyStack();
      
           // 添加元素
           ms.add("hello");
           ms.add("world");
           ms.add("java");
       
       // System.out.println(ms.get());
       // System.out.println(ms.get());
       // System.out.println(ms.get()); 这是getFirst()的方法,只能得到“java”
       // NoSuchElementException
       // System.out.println(ms.get());
       
           while(!ms.isEmpty()){
               System.out.println(ms.get()); 修改后的get()方法,实现了弹栈效果
           }
      

    相关文章

      网友评论

          本文标题:根据LinkedList,来实现一个栈结构的集合

          本文链接:https://www.haomeiwen.com/subject/zzbuettx.html