java用数组实现栈

1.1.  栈的数据结构

栈是一种先进后出的数据结果,只能在一端(称为栈顶(top))对数据项进行插入和删除。

1.2.  Java实现


StackTest

package ch04;

public class StackTest {

    public static void main(String[] args) {

       ArrayStack stack = new ArrayStack(10);
       System.out.println("isEmpty: "+stack.isEmpty());
       for(int i = 0;i<10;i++){
           stack.push(i);
       }
       System.out.println("isFull: "+stack.isFull());

       while(!stack.isEmpty()){
           System.out.println(stack.pop());
       }

    }

}

class ArrayStack{
    private int[] arrInt;//内置数组
    private int top;//栈顶指针

    public ArrayStack(int size){
       this.arrInt = new int[size];
       top = -1;
    }

    /**
     * 判断栈是否为空
     * @return
     */
    public boolean isEmpty(){
       return -1 == top;
    }

    /**
     * 判断栈是否已满
     * @return
     */
    public boolean isFull(){
       return arrInt.length -1 == top;
    }
    /**
     * 向栈顶插入一个元素
     * @param item
     */
    public void push(int item){
       if(isFull()){
           throw new RuntimeException("栈已满");
       }
       arrInt[++top] = item;
    }

    /**
     * 从栈顶取出一个元素
     * @return
     */
    public int pop(){
       if(isEmpty()){
           throw new RuntimeException("栈为空");
       }
       return arrInt[top--];
    }
}

结果如下:

isEmpty: true

isFull: true

9

8

7

6

5

4

3

2

1

0

时间: 2024-10-23 15:55:30

java用数组实现栈的相关文章

java、C语言实现数组模拟栈

java: public class ArrayStack { private int[] data; private int top; private int size; public ArrayStack(int size) { this.data = new int[size]; this.size = size; this.top = -1; } public boolean isEmpty() { if (this.top == -1) { return true; } return

数组、栈、堆(java基础知识五)

1.数组概述.定义格式 * A:数组概念 数组是存储同一种数据类型多个元素的集合.也可以看成是一个容器. 数组既可以存储基本数据类型,也可以存储引用数据类型. * B:数组定义格式 格式1:数据类型[] 数组名;----int[] arr; 格式2:数据类型 数组名[];----int arr[]; * C:数组是存储多个变量(元素)的东西(容器),这多个变量的数据类型要一致, 2.数组初始化.动态初始化 * A:什么是数组的初始化 Java中的数组必须先初始化,然后才能使用. 所谓初始化:就是

基于数组的栈(Java)

package com.rao.linkList; /** * @author Srao * @className ArrayStack * @date 2019/12/3 13:41 * @package com.rao.linkList * @Description 基于数组的栈 */ public class ArrayStack { private String[] items; //栈中的数据 private int count; //当前栈中元素的个数 private int n;

Hdu 3887树状数组+模拟栈

题目链接 Counting Offspring Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1757    Accepted Submission(s): 582 Problem Description You are given a tree, it’s root is p, and the node is numbered fr

用数组模拟栈的结构

package datastruct; import java.util.Arrays; /** * 用数组模拟栈的结构:后进先出(LIFO) 线性表结构 * @author stone * 2014-07-29 06:34:49 */ public class SimulateStack<E> { public static void main(String[] args) { SimulateStack<String> ss = new SimulateStack<Str

用数组实现栈

用数组表示栈 选择用数组表示栈内容必须预先估计栈的最大容量.在Java中,数组一旦创建,其大小是无法改变的,而数组设置过大可能会浪费大量内存,设置过小又可能会溢出. 所以我们希望能够动态调整数组a[i]的大小,使得它既足以保存所有元素,又不至于浪费过多的空间. 首先,实现一个方法将栈移动到另一个大小不同的数组中. 1 private void resize(int max) { 2 3 Item[] temp = (Item[]) new Object[max]; 4 for (int i =

java的堆,栈,静态代码区 详解

面试中,有家公司做数据库开发的,对内存要求比较高,考到了这个 一:在JAVA中,有六个不同的地方可以存储数据: 1. 寄存器(register). 这是最快的存储区,因为它位于不同于其他存储区的地方——处理器内部.但是寄存器的数量极其有限,所以寄存器由编译器根据需求进行分配.你不能直接控制,也不能在程序中感觉到寄存器存在的任何迹象. ------最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制. 2. 栈(stack).位于通用RAM中,但通过它的“栈指针”可以从处理器哪里获得支持

用数组实现栈demo

package cn.aust.zyw.demo; import java.util.Iterator; /** * Created by zyw on 2016/2/19. * 用数组实现栈 */ public class MyStack<T> implements Iterable<T>{ public static void main(String args[]){ MyStack<Integer> myStack=new MyStack<>(); f

java开发中的栈和堆的运作介绍

java是一种可以跨平台的开发语言,并且具有很好的可扩展性,所以现在java是当前比较流行的开发语言,然而java中的很多内部的机制问题是一些开发人员所不能搞清楚的,今天我们北京华宇盈通就来介绍java商城开发.jsp商城建设以及java商城产品的开发工作人员就来介绍一下java中比较有难度的栈和堆.java商城开发.jsp商城建设以及java商城产品中把内存划分成两种:一种是栈内存,另一种是堆内存.在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配,当在一段代码块定义一个