用Java实现栈结构

栈是一种先进后出的数据结构,出栈入栈都是操作的栈顶元素,下面是利用Java语言实现的一个简单的栈结构

class MyStack{

private int size;//栈大小

private Object[] elementData;//栈中元素

private int top;//栈顶指针

public MyStack(int size){
    this.size = size;
    this.top = 0;
    this.elementData = new Object[size];
}

public boolean push(Object o){
    if (ensureCapacity(top+1)){
        top++;
        elementData[top] = o;
        return true;
    }
    return false;
}

public Object pop(){
    if (top >= 0){
        Object o = elementData[top];
        elementData[top] = null;
        top--;
        return o;
    }
    return null;
}

public boolean isEmpty(){
    return top == 0;
}

private boolean ensureCapacity(int capacity) {
    if (capacity >= this.size){
        return false;
    }
    return true;
}

}

时间: 2024-10-25 11:02:31

用Java实现栈结构的相关文章

Java 模拟栈结构

栈和队列: 通常是作为程序猿的工具,用于辅助构思算法.生命周期较短,执行时才被创建 訪问受限.在特定时刻,仅仅有一个数据可被读取或删除 是一种抽象的结构.内部的实现机制.对用户不可见.比方用数组.链表来实现栈 栈: 同一时候,仅仅同意一个数据被訪问,后进先出 对于入栈和出栈的时间复杂度都为O(1),即不依赖栈内数据项的个数,操作比較快 例,使用数组作为栈的存储结构 public class StackS<T> { private int max; private T[] ary; privat

Java中栈结构的自我实现

package com.pinjia.shop.common.collection; /** * Created by wangwei on 2017/1/3. */ public class MyLinkedStack<T> { //定义节点数据结构 private class Node{ public T data; public Node next; public Node(){} public Node(T data,Node next){ this.data = data; this

闭关修炼中 *** Java常用算法之 -- 栈结构

什么是栈结构: 栈结构从数据的运算来分类,栈结构具有特殊的运算规则. 从数据的逻辑结构来看,栈结构其实就是一种线性结构. but!!! 从数据的存储结构来划分,栈结构分为两类: 顺序表结构:即用一组地址连续的内存单元依次保存栈中的数据.在程序中,可以定义一个 指定大小的结构数组来作为栈,序号为0的元素就是栈底,在定义一个top保 存栈顶的序号. 链式栈结构:即使用链式形式保存栈中各元素的值.链表首部(head引用所指向元素)为栈顶, 链表尾部(指向地址为null)为栈底. 栈结构遵循:后进先出(

Java实现栈和队列

栈:LIFO(后进先出) 队列:FIFO(先进先出) 栈的顺序存储结构实现: /** * 基于数组实现的顺序栈 * @param <E> */ public class Stack<E> { private Object[] data = null; private int maxSize=0; //栈容量 private int top =-1; //栈顶指针 /** * 构造函数:根据给定的size初始化栈 */ Stack(){ this(10); //默认栈大小为10 }

java虚拟机底层结构详解[转]

本文来自:曹胜欢博客专栏.转载请注明出处:http://blog.csdn.net/csh624366188 在以前的博客里面,我们介绍了在java领域中大部分的知识点,从最基础的java最基本语法到SSH框架.这里面应该包含了在java领域里面的大部分内容了吧.但是,那些知识点是让我们从一个应用的层面上了解了java,java程序真正底层的运行机制和一些底层虚拟机的工作我们还不了解,虽然这些内容在我们真正的开发中几乎用不到这些底层的东西,但对于我们对java的理解会有比较大的帮助.尤其也对以后

使用泛型实现栈结构

泛型类就是含有一个或者多个类型参数的类.定义泛型类很简单,只需要在类的名称后面加上"<"和">",并在其中指明类型参数,比如本例中的T. 也可以在其中指明多个参数,如K.V.多个参数之间使用逗号隔开.定义完类后,就可以在类中的域和方法中使用泛型参数. 注意: 泛型类型的参数只能使用类类型,而不能使用基本类型. 设计过程: 1)编写泛型类Stack,在该类中定义了3个方法,分别用来入栈的push()方法.用来出栈的pop()方法和用来判断栈是否为空的emp

Java虚拟机底层结构详解

Java虚拟机 Java虚拟机(Java Virtual Machine) 简称JVM Java虚拟机是一个想象中的机器,在实际的计算机上通过软件模拟来实现.Java虚拟机有自己想象中的硬件,如处理器.堆栈.寄存器等,还具有相应的指令系统.下面我们就来看一下这几部分比较重要的java虚拟机的结构: 1)JVM寄存器 所有的CPU均包含用于保存系统状态和处理器所需信息的寄存器组.如果虚拟机定义义较多的寄存器,便可以从中得到更多的信息而不必对栈或内存进行访问,这有利于提高运行速度.然而,如果虚拟机中

深入java虚拟机(一)——java虚拟机底层结构详解

在以前的博客里面,我们介绍了在java领域中大部分的知识点,从最基础的java最基本语法到SSH框架.这里面应该包含了在java领域里面的大部分内容了吧.但是,那些知识点是让我们从一个应用的层面上了解了java,java程序真正底层的运行机制和一些底层虚拟机的工作我们还不了解,虽然这些内容在我们真正的开发中几乎用不到这些底层的东西,但对于我们对java的理解会有比较大的帮助.尤其也对以后java开发中的性能优化有很大帮助,可以使我们减少一些没必要的内存浪费等好处.所以,从今天开始,我将和大家一起

日常学习随笔-数组、单链表、双链表三种形式实现栈结构的基本操作

一.栈结构 栈(stack)是限制插入和删除只能在一个位置上的表,该位置是 表的末端,叫做栈的顶(Top).对栈的基本操作有push(进栈),pop(出栈),peak(栈顶元素),size(栈容量)等. 栈的核心思想:"先进后出". 二.案例一:数组实现"栈" 1 package com.xfwl.algorithmAnalysis.stack; 2 3 import java.util.Arrays; 4 5 /** 6 * 自定义栈结构(基于数组的形式) 7 *