`
liubey
  • 浏览: 107182 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

利用数据结构中的栈实现单词的反转

    博客分类:
  • Java
阅读更多
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. 基础数据结构** ...以上涵盖了从基础数据结构和算法到具体的编程实现细节,这些知识点不仅适用于初学者,也适合有一定基础的学习者深入理解和应用。

    东北大学历年数据结构考研真题.docx

    - **前缀表达式转后缀表达式**:利用栈的数据结构,将前缀表达式转换成后缀表达式。例如:将`a*(b+d)-e/f`转换为后缀表达式。 2. **二叉树** - **层次遍历与中序遍历**:根据给定的层次遍历和中序遍历结果,构建...

    数据结构的一些面试题.pdf

    - **数组**:是一种线性数据结构,存储在连续的内存空间中,支持随机访问,即可以通过索引直接访问任何元素。数组适合于固定大小的数据集,插入和删除操作效率较低。 - **链表**:同样是一种线性数据结构,但存储...

    大厂学院算法与数据结构解析课程大纲1

    栈和队列是计算机科学的基础,课程会复习它们的数据结构和Java实现,包括优先队列和双端队列。通过实际题目,学员将学会如何使用栈实现队列,以及处理有效括号和柱状图中的最大矩形。 排序算法是程序员必备技能,...

    数据结构与算法leetcodelintcode题解1

    - **栈**:后进先出的数据结构,用于递归、回溯等问题。 - **集合**和**映射**:无序和有序的键值对存储,用于快速查找。 - **图**:用于表示节点之间的关系,常用于路径查找、最短路径问题等。 2. **排序算法**...

    JavaScript中数据结构与算法(一):栈

    在JavaScript中,我们可以通过数组实现一个简单的栈数据结构。可以使用数组的push方法来模拟入栈操作,使用shift方法来模拟出栈操作,同时还需要定义一个方法来查看栈顶元素(peek),一个方法来清除栈内所有元素...

    c和c++500强面试题

    9. 查找最小的K个元素:利用最大堆的数据结构可以高效地找出一组数中的最小K个元素,因为最大堆的根节点总是当前堆中的最大元素。 10. 求二叉树中节点的最大距离:这是一个关于树的深度和广度的问题,可以通过递归...

    编程新手必刷50题 V1.01

    44. 实现栈:自行构建栈数据结构。 45. 队列维护:理解和实现队列操作。 46. 二阶阶乘:应用栈进行递归计算。 ### 阶段六:简单递归 这个阶段涉及递归的基本概念。必刷题目: 47. 斐波那契数列:理解递归在数列计算...

    Coding Interview in Java

    8. 数据结构设计问题:如Median of Two Sorted Arrays(两个有序数组的中位数),这要求候选人具备设计新数据结构的能力,以解决特定问题。 9. 基于二分查找的问题:例如Search Insert Position(搜索插入位置),...

    瓶子君的算法小书.pdf

    ### 前端算法与数据结构的重要性 前端开发在日常工作中,往往不会频繁地直接编写算法,但理解算法对前端进阶是极为重要的。前端工程师若能深入理解前端框架、开发语言、开源库背后的算法原理,则能大大提升源码阅读...

    Interviewing in Swift Algorithms and Data Structures

    对于iOS或macOS开发者而言,在日常工作中很少有机会去实践诸如栈、队列、字典树(Trie)、二叉搜索树等自定义数据结构及算法。这是因为苹果提供的框架通常已经包含了大多数功能,例如在对数组进行排序时,我们只需...

    1、基础算法必练题(含解法)).pdf

    6. **Add and Search Word - Data structure design**:设计一个数据结构,可以在已有的单词列表中添加新词并搜索模式。这需要一个动态更新的前缀树。 7. **Word Search II**:在一个二维字符网格中找出所有具有...

    三级网络技术南开100题

    这可以通过查找空格或标点符号来分割单词,使用栈或反转字符串的方法来实现单词的倒序,最后重新组合成新的字符串。 以上知识点涵盖了素数检测、数组操作、文件操作、条件统计、字符串处理和单词操作等多个方面,...

    lintcode算法分析和解答

    - 栈是一种后进先出(LIFO)的数据结构,主要用于解决回溯问题。 - **集合(Set)** - 集合是一组不重复元素的无序集合,通常使用哈希表实现。 - **映射(Map)** - 映射是一种将键(key)关联到值(value)的数据结构,...

    算法面试经典 100题

    **知识点**:本题考查如何设计一个支持`push`、`pop`和`min`操作的栈数据结构。其中`min`操作应该返回栈中的最小元素。 **解题思路**: 1. **辅助栈**:维护一个辅助栈,用于存储最小值。每当主栈`push`一个元素时...

    算法-leetcode-剑指offer上的题很多

    - **栈(Stack)**: 后进先出(LIFO)的数据结构,常用于算法问题中的临时存储。 - **集合(Set)**: 一种不允许重复元素的集合类型,提供数学意义上的集合运算。 - **映射(Map)**: 一种存储键值对的数据结构,支持快速...

Global site tag (gtag.js) - Google Analytics