栈一次只允许访问一个数据项:即最后插入的数据项。移除这个数据项后才能访问倒数第二个数据项,依此类推。栈的数据项遵循后进先出的次序。
1.栈的实现代码
package com.gjy.stack;
public class Stack {
private int maxSize;
private char [] stackArray;
private int top;
public Stack(int s){
maxSize = s;
stackArray = new char[maxSize];
top = -1;
}
// 添加数据
public void push(char j){
stackArray[++top] = j;
}
// 删除数据
public char pop(){
return stackArray[top--];
}
// 获取数据
public char peek(){
return stackArray[top];
}
// 判断栈是否为空
public boolean isEmpty(){
return (top == -1);
}
// 判断栈是否已满
public boolean isFull(){
return (top == maxSize-1);
}
}
下面以一个输入字符串的倒序输出为例:
package com.gjy.stack;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Reverser {
private String input;
private String output;
public Reverser(String in){
input = in;
}
public String doRve(){
int stackSize = input.length();
Stack stack = new Stack(stackSize);
for(int i=0;i<input.length();i++){
char c = input.charAt(i);
stack.push(c);
}
output = "";
while(!stack.isEmpty()){
char c = (char) stack.pop();
output = output + c;
}
return output;
}
public static void main(String[] args) {
String input,output;
while (true) {
System.out.println("Enter a String: ");
BufferedReader buf=new BufferedReader(new InputStreamReader(System.in));
try {
input = buf.readLine();
if ("".equals(input.trim())||input==null){
break;
}
Reverser reverser = new Reverser(input);
output = reverser.doRve();
System.out.println(output);
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
分享到:
相关推荐
Java栈是一种基于后进先出(LIFO)原则的数据结构,它在计算机科学和编程中具有广泛的应用。本文将深入探讨Java中栈的实现以及其在实际应用中的使用。 首先,我们来理解栈的基本概念。栈是一种特殊类型的线性数据...
关于Java栈与堆的深入解析 Java作为一种广泛使用的编程语言,其内存管理机制是学习者必须掌握的核心概念之一。在Java中,栈(Stack)与堆(Heap)是用于存储数据的主要区域,它们各自承担着不同的职责,对于理解...
java数字栈和符号栈模拟计算器(中缀表达式) “计算中缀表达式”可以称得上是一个特别经典的关于栈的算法题,几乎在所有数据结构教材中都会涉及,而且很多公司面试或者笔试的时候都会把这道题作为一个考察点。可以说...
Java栈是Java虚拟机(JVM)内存模型的重要组成部分,主要负责存储方法调用过程中的局部变量、操作数和方法返回信息。栈的特点是后进先出(LIFO),每个线程都有自己的独立Java栈,确保了线程安全的数据存储。 1. **...
在Java编程语言中,栈(Stack)和队列(Queue)是两种基本的数据结构,它们在处理数据存储和操作方面有着广泛的应用。本教程将通过一些小例子来深入理解这两种数据结构及其在Java中的实现。 栈是一种后进先出(LIFO...
Java栈与堆的存储机制解析 Java栈和堆是Java语言中两个最基本的存储机制,它们都是Java用来在RAM中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。 1. 栈的存储机制: 栈的优势是...
通过Java面向对象思想和类的封装性完成栈的类设计,选择合适的底层存储结构,完成栈的判空isEmpty()、进栈push()、出栈pop()、取栈顶元素peek(),栈存储的对象以泛型给出。并和Java中的Stack的类以及功能进行比较...
java栈实验代码
每个方法调用都会在Java栈上创建一个栈帧,包含方法的局部变量、操作数、返回地址等信息。Java栈的管理是解释器的重要职责,包括栈帧的分配、数据的压栈和出栈操作。 【异常处理】 异常处理机制是Java卡虚拟机不可...
JVM Java栈桢的创建 Java虚拟机(JVM)是Java语言的运行环境,它负责将Java字节码转换为机器码并执行。在JVM中,栈桢的创建是Java程序执行的基础。本文将对JVM Java栈桢的创建进行详细的分析。 一、栈桢的概念 在...
栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。
在IT领域,迷宫求解是一个经典的问题,而在这个场景中,我们看到的是一个使用Java编程语言实现的迷宫求解算法,它基于栈数据结构。这个名为"Migong.rar"的压缩包包含了一个名为"MiGong"的程序,以及一个可能是链接或...
JAVA栈类程序代码,包括进栈,出栈,以及栈空栈满的判定,希望能帮助到大家。
关于栈的使用,内有关于使用的示例 栈的应用举例 1. 将10进制正整数num转换为n进制 private String conversion(int num, int n) { MyStack<Integer> myStack = new MyArrayStack(); Integer result = num; ...
栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。
Java把内存划分成两种:一种是栈内存,一种是堆内存。 在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配。当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过...
在Java编程中,栈是一种非常重要的数据结构,它遵循“后进先出”(LIFO)的原则。本项目是利用栈来实现一个简单的计算器,不支持括号表达式的计算,其用户界面是通过Java Swing库构建的。下面将详细介绍这个计算器的...
本文将详细阐述Java和C++中栈与堆的区别以及Java在这方面的优势。 首先,我们来理解栈内存。栈内存主要负责存储程序运行过程中的局部变量,包括基本类型变量(如int、char)和对象的引用变量。在Java中,当函数执行...
### Java中堆内存与栈内存分配浅析 #### 一、引言 在Java编程语言中,内存管理是一项至关重要的技术。程序运行时所使用的内存主要分为两类:堆内存(Heap Memory)和栈内存(Stack Memory)。理解这两种内存类型的...