Java栈的三种实现方法,使用Java自带的方法 Stack、用数组模拟Stack、用链表模拟Stack;
第一种方法,使用Java自带的Stack方法,代码如下:
package study.stack; import java.util.Stack; /** * Created by Taoyongpan on 2017/10/13. * 利用Java自带的栈方法 */ public class StackDemo { public static void main(String[] args){ Stack<String> user = new Stack<String>(); user.push("taoyongpan1"); user.push("taoyongpan2"); user.push("taoyongpan3"); user.push("taoyongpan4"); System.out.println("栈顶"+user.peek()); System.out.println("查找"+user.search("taoyongpan1")); while (!user.empty()){ System.out.println(user.pop()); } } } 运行结果: 栈顶taoyongpan4 查找4 taoyongpan4 taoyongpan3 taoyongpan2 taoyongpan1 Process finished with exit code 0
第二张方法,用数组模拟栈,代码如下:
package study.stack; /** * Created by Taoyongpan on 2017/10/13. * 利用数组创建栈 */ public class ArrayStack { Object stack[] =null; int size; int top = -1; public ArrayStack(){ stack = new Object[100]; size = 100; } public ArrayStack(int size){ stack = new Object[size]; this.size = size; } //判断是否为空 public boolean isEmpty(){ if (top==-1){ return true; }else { return false; } } //判断是否已满 public boolean isFull(){ if (top>=(size-1)){ return true; }else { return false; } } //入栈 public void push(Object item){ if (isFull()){ System.out.println("堆栈已经满了"); return; } top++; stack[top] = item; } //出栈 public Object pop(){ Object item = null; if (isEmpty()){ System.out.println("堆栈为空"); return item; } item = stack[top]; top--; return item; } //读取栈顶元素 public Object peek(){ if (isEmpty()){ System.out.println("堆栈为空"); return null; } return stack[top]; } //读取大小 public int size(){ return top+1; } //获取容量 public int capcity(){ return size; } }
package study.stack; /** * Created by Taoyongpan on 2017/10/13. */ public class StackArrayDemo { public static void main(String[] args){ ArrayStack user = new ArrayStack(); user.push("taoyongpan1"); user.push("taoyongpan2"); user.push("taoyongpan3"); user.push("taoyongpan4"); System.out.println("堆栈的大小:"+user.size); System.out.println(user.peek()); while (!user.isEmpty()){ System.out.println(user.pop()); } } }
结果如下:
堆栈的大小:100 taoyongpan4 taoyongpan4 taoyongpan3 taoyongpan2 taoyongpan1 Process finished with exit code 0
第三种方法,代码 如下:
package study.stack; /** * Created by Taoyongpan on 2017/10/13. */ public class StackNode { private Object data; private StackNode next; //创建头结点 public StackNode(){ data = null; next = null; } //添加节点 public StackNode(Object data){ this.data = data; next = null; } public Object getData() { return data; } public void setData(Object data) { this.data = data; } public StackNode getNext() { return next; } public void setNext(StackNode next) { this.next = next; } }
package study.stack; /** * Created by Taoyongpan on 2017/10/13. */ public class StackNodeDemo { StackNode head = null; public StackNodeDemo(){ head =new StackNode(); } //入栈 public void push(Object data){ StackNode newNode = new StackNode(data); newNode.setNext(head.getNext()); head.setNext(newNode); } //判断是否为空 public boolean isEmpty(){ if (head.getNext()==null){ return true; }else { return false; } } //出栈 public Object pop(){ Object item = null; if (isEmpty()){ return item; } item = head.getNext().getData(); head.setNext(head.getNext().getNext()); return item; } //获得栈的大小 public int size(){ int len = 0; StackNode node = head; while (node.getNext()!=null){ len++; node = node.getNext(); } return len; } //读取栈顶元素 public Object peek(){ Object item = null; if (isEmpty()){ return item; } item = head.getNext().getData(); return item; } public static void main(String[] args){ StackNodeDemo user = new StackNodeDemo(); user.push("taoyongpan1"); user.push("taoyongpan2"); user.push("taoyongpan3"); user.push("taoyongpan4"); System.out.println("栈的大小:"+user.size()); System.out.println("读取栈顶元素:"+user.peek()); while (!user.isEmpty()){ System.out.println(user.pop()); } } }
运行结果如下:
栈的大小:4 读取栈顶元素:taoyongpan4 taoyongpan4 taoyongpan3 taoyongpan2 taoyongpan1 Process finished with exit code 0
相关推荐
Java栈是一种基于后进先出(LIFO)原则的数据结构,它在计算机科学和编程中具有广泛的应用。本文将深入探讨Java中栈的实现以及其在实际应用中的使用。 首先,我们来理解栈的基本概念。栈是一种特殊类型的线性数据...
2. **Java中的栈实现**: Java提供了`java.util.Stack`类来实现栈。它继承自`Vector`类,因此提供了丰富的线程安全的方法,如`push()`, `pop()`, `peek()`等。在这个计算器项目中,我们可以创建一个栈对象来存储...
java数字栈和符号栈模拟计算器(中缀表达式) “计算中缀表达式”可以称得上是一个特别经典的关于栈的算法题,几乎在所有数据结构教材中都会涉及,而且很多公司面试或者笔试的时候都会把这道题作为一个考察点。可以说...
在本案例中,我们主要探讨的是顺序存储方式下的栈实现。 #### 三、MyStack类详解 ##### 1. 类成员变量 - `int MAX_SIZE`: 定义了栈的最大容量,默认为100。 - `int top`: 栈顶指针,初始值为-1,表示栈为空。 - `...
在这个基于Java的SIP协议栈实现中,我们可以通过提供的源码实例和jar包来理解和学习SIP的工作原理。 首先,我们来看标题中的“java sip 协议栈实现客户端和服务”。这意味着这个项目包含了SIP协议客户端和服务器端...
用Java实现一个栈
用java实现的栈Stack类,不继承任何集合类,用对象数组实现
Java实现栈的基本操作
在Java编程语言中,栈(Stack)和队列(Queue)是两种基本的数据结构,它们在处理数据存储和操作方面有着广泛的应用。本教程将通过一些小例子来深入理解这两种数据结构及其在Java中的实现。 栈是一种后进先出(LIFO...
关于Java栈与堆的深入解析 Java作为一种广泛使用的编程语言,其内存管理机制是学习者必须掌握的核心概念之一。在Java中,栈(Stack)与堆(Heap)是用于存储数据的主要区域,它们各自承担着不同的职责,对于理解...
Java中栈的实现可以使用`java.util.Stack`类,它是`Vector`类的子类,提供了`push()`, `pop()`, `peek()`等方法。 在给定的文件“王倩”中,很可能包含了实现这些数据结构的Java源代码。通过阅读和理解这些代码,你...
java api 中也有stack,这个是根据stack的特性编写出来的; 此程序在功能上和java提供的功能是一样的,只是实现的方法不一样;
在计算机科学中,数据结构是组织和存储数据的方式,它对于高效的算法设计至关重要...通过分析`stack_SqStack`和`stack_SLinkList`这两个文件,你可以深入了解Java中栈的两种实现方式,并学习如何在实际项目中灵活运用。
在 Java 中,栈是一种先进后出的数据结构,即后入栈的元素最先被取出。栈可以使用数组或链表实现,本文使用 ArrayList 实现栈结构。 栈结构的定义包括以下几个部分: * 入栈(push):将元素添加到栈顶 * 出栈...
Java实现顺序栈是一种常见的数据结构操作,主要用于存储和管理元素序列。栈是一种后进先出(LIFO,Last In First Out)的数据结构,通常用于执行回溯、递归等算法。在Java中,我们可以使用数组或ArrayList来实现顺序...
实现弹栈,进栈,判断栈是否为空或满等功能 Java入门的简单程序
栈是一种特殊的线性数据结构,遵循“后进先出”(LIFO)的原则,常用于各种计算和内存管理操作。下面我们将详细探讨这个作业所涵盖的知识点。 1. **栈的原理与操作**: - **初始化**:创建一个空栈,通常通过数组...
实现一个栈,要求使用O(1)时间获取栈中最小值,O(1)执行pop、push操作。
Hui.java可能是实现栈的辅助类,它可能包含了栈操作的定义,如压栈(push)和弹栈(pop)等方法。例如: ```java public class Hui { private char[] stack; private int top; public Hui(int size) { stack =...
试用java.util.Stack泛型栈作为父类,用另一个泛型栈对象作为成员变量,模拟实现一个泛型子类Queue,当存储元素的第1个栈的元素超过dump时,再有元素入队列就倒入第2栈。除提供无参构造函数Queue( )外,其它所有队列...