栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。栈具有记忆作用,对栈的插入与删除操作中,不需要改变栈底指针。
栈是允许在同一端进行插入和删除操作的特殊线性表。允许进行插入和删除操作的一端称为栈顶(top),另一端为栈底(bottom);栈底固定,而栈顶浮动;栈中元素个数为零时称为空栈。插入一般称为进栈(PUSH),删除则称为退栈(POP)。栈也称为后进先出表。
package com.algorithm; /** * 栈 * @author lenovo *栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。它按照先进后出的原则存储数据, *先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据 *(最后一个数据被第一个读出来)。栈具有记忆作用,对栈的插入与删除操作中,不需要改变栈底指针。 *栈是允许在同一端进行插入和删除操作的特殊线性表。允许进行插入和删除操作的一端称为栈顶(top),另一端为栈底(bottom); *栈底固定,而栈顶浮动; *栈中元素个数为零时称为空栈。插入一般称为进栈(PUSH),删除则称为退栈(POP)。栈也称为后进先出表。 */ public class MyStack { //底层实现是一个数组 private long[] attr; /** * 栈顶 */ private int top; /** * 默认构造方法 */ public MyStack(){ attr = new long[10]; top =-1; } /** * 带参数构造方法,初始化栈大小 * @param maxsize */ public MyStack(int maxsize){ attr = new long[maxsize]; top =-1; } /** * 添加数据 * @param value */ public void push(long value) { attr[++top]=value; } /** * 移除数据 * @return */ public long pop() { return attr[top--]; } /** * 查看数据 * @return */ public long peek(){ return attr[top]; } /** * 判断是否为空 * @return */ public boolean isEmpty() { return top==-1; } /** * 判断栈是否满 * @return */ public boolean isFull() { return top==attr.length-1; } public static void main(String[] args) { MyStack ms = new MyStack(4); ms.push(23); ms.push(12); ms.push(1); ms.push(90); System.out.println(ms.isEmpty()); System.out.println(ms.isFull()); System.out.println(ms.peek()); System.out.println(ms.peek()); while (!ms.isEmpty()) { System.out.print(ms.pop()+","); } System.out.println(ms.isEmpty()); System.out.println(ms.isFull()); } }
相关推荐
下面将详细解释这些概念及其Java实现。 **线性表** 是一种基本的数据结构,它是由n(n>=0)个相同类型元素构成的有限序列。线性表中的元素具有顺序关系,即每个元素都有一个前驱和后继,除了第一个元素没有前驱,...
实现一个栈,要求使用O(1)时间获取栈中最小值,O(1)执行pop、push操作。
本文将深入探讨Java中栈的实现以及其在实际应用中的使用。 首先,我们来理解栈的基本概念。栈是一种特殊类型的线性数据结构,其中元素的添加和删除操作(称为入栈和出栈)只在数据结构的一端进行,这一端被称为栈顶...
### 栈的Java语言实现详解 #### 一、栈的基本概念 栈是一种特殊的线性表,只允许在表的一端...这些内容不仅有助于理解栈的工作原理,还能帮助读者掌握栈的Java实现技巧,为进一步学习算法和数据结构打下坚实的基础。
用java实现的栈Stack类,不继承任何集合类,用对象数组实现
用Java实现一个栈
本项目是利用栈来实现一个简单的计算器,不支持括号表达式的计算,其用户界面是通过Java Swing库构建的。下面将详细介绍这个计算器的实现原理以及涉及到的相关知识点。 1. **栈的基本概念**: 栈是一种线性数据...
3. 如何使用Java实现SIP客户端和服务器端。 4. Eclipse开发环境的使用和调试技巧。 5. Ant构建工具的使用。 6. 日志记录和调试技术。 7. 依赖管理和库的引入。 此外,还可以深入了解网络编程、多线程处理、异常处理...
在这个主题中,我们将深入探讨如何在Java中实现栈这一基本数据结构,具体包括顺序栈(stack_SqStack)和链栈(stack_SLinkList)。 栈是一种后进先出(Last In First Out, LIFO)的数据结构,常用于临时存储和快速...
java api 中也有stack,这个是根据stack的特性编写出来的; 此程序在功能上和java提供的功能是一样的,只是实现的方法不一样;
Java实现栈的基本操作
java数字栈和符号栈模拟计算器(中缀表达式) “计算中缀表达式”可以称得上是一个特别经典的关于栈的算法题,几乎在所有数据结构教材中都会涉及,而且很多公司面试或者笔试的时候都会把这道题作为一个考察点。可以说...
Java实现顺序栈是一种常见的数据结构操作,主要用于存储和管理元素序列。栈是一种后进先出(LIFO,Last In First Out)的数据结构,通常用于执行回溯、递归等算法。在Java中,我们可以使用数组或ArrayList来实现顺序...
在Java中,我们可以使用单链表来实现链式栈。下面将详细介绍链式栈的原理、实现以及相关操作。 **链式栈的基本概念** 栈是一种特殊的线性数据结构,遵循“后进先出”(Last In First Out, LIFO)原则。链式栈是用...
实现弹栈,进栈,判断栈是否为空或满等功能 Java入门的简单程序
java实现的顺序栈,部分代码:public class OrderStack { int top=-1; String[] stack; public OrderStack(int initcap)throws Exception{ if(initcap){
试用java.util.Stack泛型栈作为父类,用另一个泛型栈对象作为成员变量,模拟实现一个泛型子类Queue,当存储元素的第1个栈的元素超过dump时,再有元素入队列就倒入第2栈。除提供无参构造函数Queue( )外,其它所有队列...
然而,如果你需要自定义栈的行为或者优化性能,你可以选择实现`java.util.Deque`接口或者直接继承`java.util.ArrayList`或`java.util.LinkedList`来创建自己的栈。例如,下面是一个基于`ArrayList`的栈实现: ```...
Java 实现内存动态分配主要涉及Java内存模型以及内存管理...综上所述,Java实现内存动态分配涉及到对堆内存、栈内存的理解,以及对垃圾回收机制的掌握。通过实验模拟,可以更直观地了解这些概念在实际操作中的应用。
基于Java技术的一种modbus TCP协议栈的实现 本文对modbus TCP协议栈的实现进行了详细的分析和研究,介绍了基于Java技术的modbus TCP协议栈的构造,并结合了当前工业发展的需要,旨在实现远程监控工业机器与移动互联...