Java定义栈结构,并实现入栈、出栈操作完整示例

本文实例讲述了Java定义栈结构,并实现入栈、出栈操作。分享给大家供大家参考,具体如下:

package com.example.demo;
import java.util.ArrayList;
public class Stack {
  ArrayList<Object> list = new ArrayList<>();
  //入栈
  public void push(Object o){
    list.add(o);
  }
  //出栈
  public Object pop(){
    Object o = list.get(list.size() - 1);
    list.remove(o);
    return o;
  }
  //栈是否为空
  public boolean isEmpty(){
    return list.isEmpty();
  }
  //栈大小
  public int size(){
    return list.size();
  }
  //打印栈元素
  @Override
  public String toString(){
    return String.valueOf(list);
  }
}
class main{
  public static void main(String[] args) {
    //创建一个栈
    Stack stack = new Stack();
    //入栈
    for(int i=1;i<=10;i++){
      stack.push(i);
    }
    //出栈
    while(!stack.isEmpty()){
      System.out.println("栈:" + stack.toString() + "\t栈大小为:" + stack.size() + "\t出栈元素为:" + stack.pop());
    }
  }
}

运行结果:

栈:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]    栈大小为:10    出栈元素为:10
栈:[1, 2, 3, 4, 5, 6, 7, 8, 9]    栈大小为:9    出栈元素为:9
栈:[1, 2, 3, 4, 5, 6, 7, 8]    栈大小为:8    出栈元素为:8
栈:[1, 2, 3, 4, 5, 6, 7]    栈大小为:7    出栈元素为:7
栈:[1, 2, 3, 4, 5, 6]    栈大小为:6    出栈元素为:6
栈:[1, 2, 3, 4, 5]    栈大小为:5    出栈元素为:5
栈:[1, 2, 3, 4]    栈大小为:4    出栈元素为:4
栈:[1, 2, 3]    栈大小为:3    出栈元素为:3
栈:[1, 2]    栈大小为:2    出栈元素为:2
栈:[1]    栈大小为:1    出栈元素为:1

更多关于java算法相关内容感兴趣的读者可查看本站专题:《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》

希望本文所述对大家java程序设计有所帮助。

(0)

相关推荐

  • 详解Java 打印堆栈的几种方法

    java 中可以通过 eclipse 等工具直接打印堆栈,但是对于某些环境中无法使用 eclipse 工具时,需要知道堆栈,如何处理呢? 介绍3种方法供选择: 方法一: package name.xu; public class CallStack { public static void printCallStatck() { Throwable ex = new Throwable(); StackTraceElement[] stackElements = ex.getStackTrace

  • java使用链表来模拟栈的入栈出栈操作实例代码

    栈:后进先出:最后一个放入堆栈中的物体总是被最先拿出来. 使用链表来模拟栈的入栈出栈操作. 1.节点类代码 public class Entry<T> { private T value; private Entry<T> next; public Entry() { this(null); } public Entry(T value) { this.value=value; this.next=null; } public void setValue(T value) { th

  • java 数据结构中栈结构应用的两个实例

    java 数据结构中栈结构应用的两个实例 1.单词逆序. 要求从控制台读入一串字符,按回车结束输入,同时显示其逆序字符串. 对于颠倒顺序的操作,用栈来解决是很方便的.具体思想是把字符串中的每一个字符按顺序存入栈中,然后再一个一个的从栈中取出.这时就是按照逆序取出的字符串. // reverse.java // stack used to reverse a string // to run this program: C>java ReverseApp import java.io.*; //

  • Java实现栈和队列面试题

    面试的时候,栈和队列经常会成对出现来考察.本文包含栈和队列的如下考试内容: (1)栈的创建 (2)队列的创建 (3)两个栈实现一个队列 (4)两个队列实现一个栈 (5)设计含最小函数min()的栈,要求min.push.pop.的时间复杂度都是O(1) (6)判断栈的push和pop序列是否一致 1.栈的创建: 我们接下来通过链表的形式来创建栈,方便扩充. 代码实现: public class Stack { public Node head; public Node current; //方法

  • 用Java代码实现栈数据结构的基本方法归纳

    链式实现: 在栈的一段添加和删除元素,在栈中维护一个指向栈顶的结点和一个count变量指示栈的大小: private LinearNode top; //指向栈顶 private int count;//标记栈的大小 每次出栈和压栈在链表的表头:(也可以再表尾,实现方式不一样而已) top--->元素1--->元素2--->元素3......... 实现(附带测试main): LinkedStack package Stack; import Bag.LinearNode; //为了重点

  • Java中堆和栈的区别详解

    当一个人开始学习Java或者其他编程语言的时候,会接触到堆和栈,由于一开始没有明确清晰的说明解释,很多人会产生很多疑问,什么是堆,什么是栈,堆和栈有什么区别?更糟糕的是,Java中存在栈这样一个后进先出(Last In First Out)的顺序的数据结构,这就是java.util.Stack.这种情况下,不免让很多人更加费解前面的问题.事实上,堆和栈都是内存中的一部分,有着不同的作用,而且一个程序需要在这片区域上分配内存.众所周知,所有的Java程序都运行在JVM虚拟机内部,我们这里介绍的自然

  • 深入JVM剖析Java的线程堆栈

    在这篇文章里我将教会你如何分析JVM的线程堆栈以及如何从堆栈信息中找出问题的根因.在我看来线程堆栈分析技术是Java EE产品支持工程师所必须掌握的一门技术.在线程堆栈中存储的信息,通常远超出你的想象,我们可以在工作中善加利用这些信息. 我的目标是分享我过去十几年来在线程分析中积累的知识和经验.这些知识和经验是在各种版本的JVM以及各厂商的JVM供应商的深入分析中获得的,在这个过程中我也总结出大量的通用问题模板. 那么,准备好了么,现在就把这篇文章加入书签,在后续几周中我会给大家带来这一系列的专

  • java使用泛型实现栈结构示例分享

    思路分析:既然是用泛型实现栈结构,那就不能用JDK自带的stack包了,需要自己定义一个栈结构,比如LinkedList. 代码如下: Stack.java: 复制代码 代码如下: package cn.edu.xidian.crytoll;import java.util.LinkedList; public class Stack<T> { private LinkedList<T> container = new LinkedList<T>(); public v

  • java内存溢出示例(堆溢出、栈溢出)

    堆溢出: 复制代码 代码如下: /** * @author LXA * 堆溢出 */ public class Heap { public static void main(String[] args) { ArrayList list=new ArrayList(); while(true) { list.add(new Heap()); } } } 报错: java.lang.OutOfMemoryError: Java heap space 栈溢出: 复制代码 代码如下: /** * @a

  • Java使用Deque实现堆栈的方法

    本文实例讲述了Java使用Deque实现堆栈的方法.分享给大家供大家参考.具体如下: import java.util.ArrayDeque; import java.util.Deque; public class IntegerStack { private Deque<Integer> data = new ArrayDeque<Integer>(); public void push(Integer element) { data.addFirst(element); }

  • 输出java进程的jstack信息示例分享 通过线程堆栈信息分析java线程

    复制代码 代码如下: #!/bin/shpro_name=java #process namekeys=`ps -ef |grep "$pro_name" |grep -v "grep" | awk '{print $2}'`nowdate=`date +%Y%m%d%H%M%S` jstackpath="/usr/java/jdk1.6.0_07/bin/jstack"cpulogpath="/home/" for key

随机推荐