package com.javaeye.liubey.algorithm.stack;
import javax.swing.JOptionPane;
import org.lx.print.P;
/**
* 项目名称:algorithm
* 包名称:com.javaeye.liubey.algorithm.stack
* 类名称:ReverseWord.java
* 描述:反转输入的单词
* 创建人:Eason.Lau
* 创建时间:2010-7-16 下午03:20:46
* Copyright http://liubey.iteye.com/
* @version
*
*/
public class ReverseWord {
public static void main(String[] args) {
String input;
String output = "";
StackChar stackChar;
input = JOptionPane.showInputDialog("请输入需要转换的单词!");
if(input !=null && !input.equalsIgnoreCase("")) {
stackChar = new StackChar(input.length());
//把单词push进栈中
for(int i=0;i<=input.length()-1;i++) {
char temp = input.charAt(i);
stackChar.push(temp);
}
//把单词取出
while(!stackChar.isEmpty()) {
output = output + stackChar.pop();
}
}
P.printlnByMyself("输入单词为", input);
P.printlnByMyself("单词反转为", output);
}
}
class StackChar {
private int maxSize;//最大容量
private char[] arrayStack;
private int top;//栈顶
public StackChar(int n) {
maxSize = n;
arrayStack = new char[maxSize];
top = -1;
}
//入栈
public void push(char j) {
arrayStack[++top] = j;
}
//出栈
public char pop() {
return arrayStack[top--];
}
//查看
public char view() {
return arrayStack[top];
}
//栈是否是空
public boolean isEmpty() {
return (top == -1);
}
}
分享到:
相关推荐
### 数据结构与算法题解概览 #### 一、基础知识篇 **1. 基础数据结构** ...以上涵盖了从基础数据结构和算法到具体的编程实现细节,这些知识点不仅适用于初学者,也适合有一定基础的学习者深入理解和应用。
- **前缀表达式转后缀表达式**:利用栈的数据结构,将前缀表达式转换成后缀表达式。例如:将`a*(b+d)-e/f`转换为后缀表达式。 2. **二叉树** - **层次遍历与中序遍历**:根据给定的层次遍历和中序遍历结果,构建...
- **数组**:是一种线性数据结构,存储在连续的内存空间中,支持随机访问,即可以通过索引直接访问任何元素。数组适合于固定大小的数据集,插入和删除操作效率较低。 - **链表**:同样是一种线性数据结构,但存储...
栈和队列是计算机科学的基础,课程会复习它们的数据结构和Java实现,包括优先队列和双端队列。通过实际题目,学员将学会如何使用栈实现队列,以及处理有效括号和柱状图中的最大矩形。 排序算法是程序员必备技能,...
- **栈**:后进先出的数据结构,用于递归、回溯等问题。 - **集合**和**映射**:无序和有序的键值对存储,用于快速查找。 - **图**:用于表示节点之间的关系,常用于路径查找、最短路径问题等。 2. **排序算法**...
在JavaScript中,我们可以通过数组实现一个简单的栈数据结构。可以使用数组的push方法来模拟入栈操作,使用shift方法来模拟出栈操作,同时还需要定义一个方法来查看栈顶元素(peek),一个方法来清除栈内所有元素...
9. 查找最小的K个元素:利用最大堆的数据结构可以高效地找出一组数中的最小K个元素,因为最大堆的根节点总是当前堆中的最大元素。 10. 求二叉树中节点的最大距离:这是一个关于树的深度和广度的问题,可以通过递归...
44. 实现栈:自行构建栈数据结构。 45. 队列维护:理解和实现队列操作。 46. 二阶阶乘:应用栈进行递归计算。 ### 阶段六:简单递归 这个阶段涉及递归的基本概念。必刷题目: 47. 斐波那契数列:理解递归在数列计算...
8. 数据结构设计问题:如Median of Two Sorted Arrays(两个有序数组的中位数),这要求候选人具备设计新数据结构的能力,以解决特定问题。 9. 基于二分查找的问题:例如Search Insert Position(搜索插入位置),...
### 前端算法与数据结构的重要性 前端开发在日常工作中,往往不会频繁地直接编写算法,但理解算法对前端进阶是极为重要的。前端工程师若能深入理解前端框架、开发语言、开源库背后的算法原理,则能大大提升源码阅读...
对于iOS或macOS开发者而言,在日常工作中很少有机会去实践诸如栈、队列、字典树(Trie)、二叉搜索树等自定义数据结构及算法。这是因为苹果提供的框架通常已经包含了大多数功能,例如在对数组进行排序时,我们只需...
6. **Add and Search Word - Data structure design**:设计一个数据结构,可以在已有的单词列表中添加新词并搜索模式。这需要一个动态更新的前缀树。 7. **Word Search II**:在一个二维字符网格中找出所有具有...
这可以通过查找空格或标点符号来分割单词,使用栈或反转字符串的方法来实现单词的倒序,最后重新组合成新的字符串。 以上知识点涵盖了素数检测、数组操作、文件操作、条件统计、字符串处理和单词操作等多个方面,...
- 栈是一种后进先出(LIFO)的数据结构,主要用于解决回溯问题。 - **集合(Set)** - 集合是一组不重复元素的无序集合,通常使用哈希表实现。 - **映射(Map)** - 映射是一种将键(key)关联到值(value)的数据结构,...
**知识点**:本题考查如何设计一个支持`push`、`pop`和`min`操作的栈数据结构。其中`min`操作应该返回栈中的最小元素。 **解题思路**: 1. **辅助栈**:维护一个辅助栈,用于存储最小值。每当主栈`push`一个元素时...
- **栈(Stack)**: 后进先出(LIFO)的数据结构,常用于算法问题中的临时存储。 - **集合(Set)**: 一种不允许重复元素的集合类型,提供数学意义上的集合运算。 - **映射(Map)**: 一种存储键值对的数据结构,支持快速...