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

首先,我们根据需求。了解到是要一个栈结构的集合,而且是根据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()方法,实现了弹栈效果
         }
    
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容