一.代码部分

1.定义接口

public interface Stack<E> {
int getSize();
boolean isEmpty();
void push(E e);
E pop();
E peek();
}

2.基于数组实现:

public class ArrayStack<E> implements Stack<E> {

    ArrayList<E> arrayList;
public ArrayStack(int capacity){
arrayList = new ArrayList(capacity);
} public ArrayStack(){
arrayList = new ArrayList<E>();
} @Override
public int getSize() {
return arrayList.getSize();
} @Override
public boolean isEmpty() {
return arrayList.isEmpty();
} @Override
public void push(E e) {
arrayList.addLast(e);
} @Override
public E pop() {
return arrayList.removeLast();
} @Override
public E peek() {
return arrayList.get(getSize()-1);
} public int getCapacity(){
return arrayList.getCapacity();
} @Override
public String toString() {
StringBuilder res = new StringBuilder();
res.append("Stack:");
res.append("[");
for (int i = 0; i < arrayList.getSize(); i++) {
res.append(arrayList.get(i));
if(i != arrayList.getSize()-1){
res.append(",");
}
}
res.append("] top");
return res.toString();
}
}

3.基于链表实现:

public class LinkedListStack<E> implements Stack<E> {

    private LinkedListPlus<E> list;

    public LinkedListStack(){
list = new LinkedListPlus<>();
} @Override
public int getSize() {
return list.getSize();
} @Override
public boolean isEmpty() {
return list.isEmpty();
} @Override
public void push(E e) {
list.addFirst(e);
} @Override
public E pop() {
return list.removeFirst();
} @Override
public E peek() {
return list.getFirst();
}
  @Override
  public String toString() {
  StringBuilder res = new StringBuilder();
  res.append("stack:top");
  res.append(list);
  return res.toString();
  }
}

自己实现数据结构系列三---Stack的更多相关文章

  1. JAVA数据结构系列 栈

    java数据结构系列之栈 手写栈 1.利用链表做出栈,因为栈的特殊,插入删除操作都是在栈顶进行,链表不用担心栈的长度,所以链表再合适不过了,非常好用,不过它在插入和删除元素的时候,速度比数组栈慢,因为 ...

  2. 【C#数据结构系列】查找

    一:查找 1.1 基本概念和术语 查找(Search)是在数据结构中确定是否存在关键码等于给定关键码的记录的过程.关键码有主关键码和次关键码.主关键码能够唯一区分各个不同的记录,次关键码通常不能唯一区 ...

  3. JVM系列三:JVM参数设置

    JVM系列三:JVM参数设置.分析   不管是YGC还是Full GC,GC过程中都会对导致程序运行中中断,正确的选择不同的GC策略,调整JVM.GC的参数,可以极大的减少由于GC工作,而导致的程序运 ...

  4. S5PV210开发系列三_简易Bootloader的实现

    S5PV210开发系列三 简易Bootloader的实现 象棋小子          1048272975 Bootloader是嵌入式系统上电后第一段运行的代码.对于功能简单的处理器,可能并没有Bo ...

  5. 开源一款强大的文件服务组件(QJ_FileCenter)(系列三 访问接口与项目集成)

    系列文章 1. 开源一款强大的文件服务组件(QJ_FileCenter)(系列一) 2. 开源一款强大的文件服务组件(QJ_FileCenter)(系列二 安装说明) 3. 开源一款强大的文件服务组件 ...

  6. <数据结构系列3>队列的实现与变形(循环队列)

    数据结构第三课了,今天我们再介绍一种很常见的线性表——队列 就像它的名字,队列这种数据结构就如同生活中的排队一样,队首出队,队尾进队.以下一段是百度百科中对队列的解释: 队列是一种特殊的线性表,特殊之 ...

  7. <数据结构系列2>栈的实现与应用(LeetCode<有效的的括号>)

    首先想要实现栈,就得知道栈为何物,以下一段摘抄至百度百科: 栈(stack)又名堆栈,它是一种运算受限的线性表.其限制是仅允许在表的一端进行插入和删除运算.这一端被称为栈顶,相对地,把另一端称为栈底. ...

  8. C# 互操作性入门系列(三):平台调用中的数据封送处理

    好文章搬用工模式启动ing ..... { 文章中已经包含了原文链接 就不再次粘贴了 言明 改文章是一个系列,但只收录了2篇,原因是 够用了 } --------------------------- ...

  9. 【JavaScript数据结构系列】07-循环链表CircleLinkedList

    [JavaScript数据结构系列]07-循环链表CircleLinkedList 码路工人 CoderMonkey 转载请注明作者与出处 1. 认识循环链表 首节点与尾节点相连的,就构成循环链表.其 ...

随机推荐

  1. esxi网络中虚拟机的相关操作

    一个虚拟机的克隆就是原始虚拟机全部状态的一个备份或镜像.克隆的过程不影响原始虚拟机.而快照指的是虚拟磁盘在某一特定时间点的副本.执行快照将保留虚拟机的状况和数据. 一.实验拓扑图: 目标:克隆虚拟机, ...

  2. Ecto 总结

    ecto 简介 ecto 相当于 elixir 的 ORM,但是得益于 elixir 语言,和传统的 ORM 相比,更加简洁和强大. ecto 主要分为 4 部分: Repo: 这是和真正数据库交互的 ...

  3. 力扣算法题—069x的平方根

    实现 int sqrt(int x) 函数. 计算并返回 x 的平方根,其中 x 是非负整数. 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去. 示例 1: 输入: 4 输出: 2 示例 ...

  4. 设计模式のFacadePattern(外观模式)----结构模式

    一.产生背景 外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口.这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性. ...

  5. 更改django的时区

    TIME_ZONE='Asia/Shanghai' datetime_obj.replace(tzinfo=(pytz.timezone("Asia/Shanghai"))).st ...

  6. Openstack window 10 镜像制作

    Windows 10 Openstack 镜像制作 //************************************************************************ ...

  7. Android中Bitmap对象和字节流之间的相互转换

    android 将图片内容解析成字节数组,将字节数组转换为ImageView可调用的Bitmap对象,图片缩放,把字节数组保存为一个文件,把Bitmap转Byte   import java.io.B ...

  8. 转://【MOS】关于在不同版本和平台之间进行还原或复制的常见问题 (文档 ID 1526162.1)--跨版本恢复

    Questions and Answers 1) 我能用更高版本的 Oracle 还原或复制旧版本的数据库吗? 2) 我能在两个不同的补丁程序集之间进行还原或复制吗? 3) 我能在同一操作系统的不同版 ...

  9. face detection[S^3FD]

    本文来自<\(S^3\)FD: Single Shot Scale-invariant Face Detector>,时间线为2017年11月. 0 引言 基于锚的目标检测方法,是通过分类 ...

  10. BZOJ3309 DZY Loves Maths 莫比乌斯反演、线性筛

    传送门 推式子(默认\(N \leq M\)): \(\begin{align*} \sum\limits_{i=1}^N \sum\limits_{j=1}^Mf(gcd(i,j)) & = ...