package org.cgz.study; import java.io.Serializable; import java.util.EmptyStackException; import java.util.Vector; /** * Java实现Stack * 可以通过继承或组合ArrayList(Vector)来实现栈 * @author Administrator * @param <E> */ public class MyStack<E> implements Cloneable,Serializable{ //JDK中的栈是通过继承Vector来实现的. //为啥要用Vector来实现? 因为栈的操作都是在栈顶.Vector底层是数组.栈的操作可以在数组的末端进行的.而使用数组线性表要比使用链表操作简单效率也高点. //相比之下,使用组合可能会更好一些,因为它可以定义一个全新的栈类,而不需要继承数组线性表中不必要和不合适的方法. private Vector<E> list = new Vector<E>(); /** * 在栈顶压入元素 * @param e */ public E push(E e) { list.addElement(e); return e; } /** * 弹出栈顶元素 * @param e * @return */ public synchronized E pop() { E e; int size = size(); e = peek(); list.removeElementAt(size - 1); return e; } /** * 获取栈顶元素 * @return */ public synchronized E peek() { int size = size(); if (size == 0) { throw new EmptyStackException(); } return list.elementAt(size - 1); } /** * 查找 * @param e * @return */ public synchronized int search(E e) { int index = list.lastIndexOf(e); if (index >= 0) { return size() - index; } return -1; } /** * 栈的大小 * @return */ public int size() { return list.size(); } /** * 栈是否为空 * @return */ public boolean isEmpty() { return size() == 0; } private static final long serialVersionUID = 5476861602556454675L; }
相关推荐
数据结构与算法 Java集合框架 并发编程 框架 Spring SpringBoot 数据库 安全 分布式 微服务 Spring Cloud Dubbo 架构设计 场景设计 缓存 网络 网络学习资源 性能调优 性能调优学习资源 Tomcat 面试题 互联网大厂面试...
Stack:继承自Vector,表示栈(后进先出)数据结构。 Stack(堆栈)是一种后进先出(Last-In-First-Out, LIFO)的数据结构。
语言实现的算法,巩固数据结构与算法的知识。 分类 ├─algorithm │ └─src │ └─chapter1 └─demo └─src ├─array_stack_queue ├─binarysearchtree ├─linkedlist ├─matrix ├─search ├─sort └─...
数据结构和算法--Java 所有算法均以Java实现(出于教育目的) 这些实现是出于学习目的。 这些实现的效率可能不如Java标准库。 表中的内容:: 搜索算法 排序算法 数据结构 堆 队列 链表 树 贪婪算法 练习题
CIS 313项目:使用链接堆栈和链接队列数据结构检查短语是否是回文。 设置 在您的计算机上克隆此git存储库,然后导航到正确的目录: git clone https://github.com/momo-ozawa/palindrome-stack-queue.git cd path/...
学习数据结构与算法的学生在学习如何实现它们之前可以先明白如何使用数据结构。以前老师在构建完整的堆栈数据结构之前只能抽象地讲解堆栈的概念。而现在老师可以立刻通过示范数据结构工具来向学生们展示如何用堆栈...
数据结构与算法(Java实现) 00-leetcode 每个类对应leetcode的一道题,就是刷!刷!刷! 02-动态数组 简单实现ArrayList,实现动态数组 03-链表 抽象List设计思路 ArrayList2优化动态数组缩容 CircleLinkedList双向...
介绍数据结构栈(Stack)的概念、特点、优缺点、适用场景和Java示例代码
Java数据结构
java arraylist源码数据结构算法 使用Java编程语言的数据结构和算法源代码(包括Stack,LinkedList,ArrayList,Queue和Binary Tree)
这是用Java实现的抽象数据结构和算法的集合。 该代码经过了很好的注释,可以轻松理解。 每个数据结构都经过良好测试。 您可以通过与我联系。 数据结构 : 此仓库包含以下数据结构: 排序算法 图上的算法 图表示 ...
韩顺平JAVA数据结构与算法、跟着写的代码 当然,附带有测试github的作用 src文件夹才是源码 目录结构 主要目的是学习java的数据结构 重点是算法 list list下有双向链表、单向循环链表约瑟夫问题、单向链表 queue ...
以下为根据数据结构的四种逻辑结构,线性结构、树形结构、关联结构和图形结构进行分别的底层实现. 线性结构 1.数组 Array loitering object不属于内存泄漏memory leak 渐进复杂度分析与均摊复杂度分析Amortized Time...
使用 Java 的数据结构算法 先决条件 git 2.6+ Maven 3+ Java 8+ 排序 、 、 、 、 、 、 搜索 二进制, 顺序 数据结构 堆 堆栈数组, 堆栈链接 队列 数组或链接 最小/ 最大优先级队列 链表 单独 加倍 圆...
此项目是基于java语言的关于数据结构的代码实现,包含所有经典数据结构算法,并且注释完善,非常适合了解和学习数据结构。另外包含了一个联系人存储工具(phonebook),它由swing展示,并应用了数据结构算法的相关概念...
常见的数据结构:栈、队列、数组、链表、树、图、字典树(⾼效树形结构)、散列表(哈希表) Java常⽤数据结构(图解): 图⽚源⾃于: 1、栈和队列: 2、栈(stack):先进后出,删除与加⼊均在栈顶操作 栈也称为...
重学数据结构-java版 0. 目录 内容 地址 1. LinkedList 链表 2. SparseArray 稀疏数组 3. Stack 栈 4. Queue 队列 5. Tree 树 6. Sort 排序 7. Graph 图 8. Algorithm 算法 9. leetcode 刷题 10. 剑指offer 1. ...
java数据结构 ArrayList、Stack、Map,为提高效率,未做边界判断(由开发人员保证逻辑上不会出现越界),实现了添加和查询的功能,无修改删除功能
集合,数据结构,反射,设计模式等),目录的详信息将在二级目录下详细列出 JVM.model(内存模型) StackOverflowError:Fibonacci.java GC(垃圾回收练习) ReferenceQueue finlize()-- java9已弃用 reflect(反射...
数据层模块services使用 ,标准SQL数据库和Spring的标准事务管理基础结构来构建服务。 通过导入类com.jl.crm.services.ServiceConfiguration来配置此层。 当前有两个。 一种称为production ,它尝试访问在/code/...