美文网首页
栈———使用链表实现栈

栈———使用链表实现栈

作者: FrodeWY | 来源:发表于2018-07-07 21:10 被阅读0次

一.简介

  栈也是一种频繁插入和删除元素的数据结构,所以使用链表实现也是一种比较好的选择。

二.代码实现

  • DummyLinkedList 链表的实现 在我的 "链表——链表的基本概念及基本实现"中介绍过有兴趣的朋友可以看一下。这里我直接是用了DummyLinkedList。
public interface Stack<E> {
  //获得栈中元素总数
  int getSize();
  //判断是否为空
  boolean isEmpty();
  //查看栈顶元素
  E peek();
  //出栈
  E pop();
  //入栈
  void push(E e);
}

/**
 * 链表栈 时间复杂度O(1)
 */
public class LinkedListStack<E> implements Stack<E> {

  private DummyLinkedList<E> linkedList;


  public LinkedListStack() {
    this.linkedList = new DummyLinkedList<>();
  }

  @Override
  public int getSize() {
    return linkedList.getSize();
  }

  @Override
  public boolean isEmpty() {
    return linkedList.isEmpty();
  }

  @Override
  public E peek() {
    return linkedList.getFirst();
  }

  @Override
  public E pop() {
    return linkedList.removeFirst();
  }

  @Override
  public void push(E e) {
    linkedList.addFirst(e);
  }

  @Override
  public String toString() {
    StringBuilder res = new StringBuilder();
    res.append("Stack: top ");
    res.append(linkedList);
    return res.toString();
  }
}

三.时间复杂度分析

  使用链表实现的栈出栈入栈都是O(1)的操作,与数组栈的复杂度一致,只不过影响LinkedListStack的主要是对象的创建,而影响ArrayStack的主要操作是数组的移动,所以两者效率上是差不多的。

相关文章

  • 栈———使用链表实现栈

    一.简介   栈也是一种频繁插入和删除元素的数据结构,所以使用链表实现也是一种比较好的选择。 二.代码实现 Dum...

  • 链表实现栈(LIFO)、队列(FIFO)

    今天来用链表实现栈 栈可以用链表实现,压栈操作即在链表头赋值,弹栈只需要将链表头元素指向下一个即可 由此可见,链表...

  • 数据结构java描述

    接口 栈 队列 集合 并查集 映射 数组 链表 栈 数组实现 链表实现 队列 数组实现 链表实现 二分搜索树 集合...

  • 单链表实现栈(C语言)

    单链表实现栈

  • C语言第七次作业:链表

    707. 设计链表 空指针 空节点 225. 用队列实现栈 链式存储栈 双队列实现栈 232. 用栈实现队列 链式...

  • 2018-07-09顺序表实现栈

    栈的实现 ——直接用顺序表(列表list)进行 栈结构实现 栈可以用顺序表实现,也可以用链表实现。 栈的操作 St...

  • 【算法】输入一个链表,输出该链表中倒数第k个结点

    1、使用栈,链表入栈的时候数出链表的大小,再逐一出栈到length-k-1个就是所求值; 2、使用循环计算链表的大...

  • 二叉树的层次遍历

    源码 用 栈 的特性(后进先出),来巧妙的控制遍历过程注意LinkedList 是使用链表实现的栈,与数组实现的S...

  • 2021-11-27

    一.栈 1.getmin栈 2.猫狗队列 3.一个栈实现另外栈的排序 二.链表 1.print 2个有序链表的公共...

  • C语言实现链栈以及基本操作

    链栈,即用链表实现栈存储结构。链栈的实现思路同顺序栈类似,顺序栈是将数顺序表(数组)的一端作为栈底,另一端为栈顶;...

网友评论

      本文标题:栈———使用链表实现栈

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