Java数据结构与算法(3) - ch04栈(栈和转置)
栈的基本特性是后进先出,最简单的用途是用于转置,还有其他诸如括号匹配,中序表达式(A+B*(C-D/(E+F)) --> ABCDEF+/-*+)和后续表达式(345+*612+/- --> 3*(4+5)-6/(1+2))互换等高级用法。
示例代码:
package chap04.Reverse; import java.io.*; // for I/Oclass StackX {private int maxSize;private char[] stackArray;private int top;public StackX(int max) {maxSize = max;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);} } class Reverser {private String input; private String output; public Reverser(String in) {input = in;}// 转置public String doRev() {int stackSize = input.length(); StackX theStack = new StackX(stackSize); for (int j = 0; j < input.length(); j++) {char ch = input.charAt(j); theStack.push(ch); }output = "";while (!theStack.isEmpty()) {char ch = theStack.pop(); output = output + ch; }return output;} } class ReverseApp {public static void main(String[] args) throws IOException {String input, output;while (true) {System.out.print("Enter a string: ");System.out.flush();input = getString1(); if (input.equals("")) { break;}Reverser theReverser = new Reverser(input);output = theReverser.doRev(); System.out.println("Reversed: " + output);} } public static String getString1() throws IOException {InputStreamReader isr = new InputStreamReader(System.in);BufferedReader br = new BufferedReader(isr);String s = br.readLine();return s;} }
转载于:https://www.cnblogs.com/thlzhf/p/4024427.html
Java数据结构与算法(3) - ch04栈(栈和转置)相关推荐
- Java数据结构和算法(四)——栈
前面我们讲解了数组,数组更多的是用来进行数据的存储,纯粹用来存储数据的数据结构,我们期望的是插入.删除和查找性能都比较好.对于无序数组,插入快,但是删除和查找都很慢,为了解决这些问题,后面我们会讲解比 ...
- 数据结构与算法(C++)– 栈(Stack)
数据结构与算法(C++)– 栈(Stack) 1.栈是什么 后进先出(Last in, First out) push 入栈,pop 出栈,top栈顶 2.栈的实现 单链表:在单链表的前端插入实现 p ...
- 数据结构和算法(五)--栈(Stack)
数据结构和算法(五)–栈(Stack) 什么是栈 栈是一种特殊的线性表,只能在一端进行操作 往栈中添加元素,一般叫做push,入栈 往栈中移除元素,一般叫做pop,弹栈/出栈(只能移除栈顶元素) 栈遵 ...
- 03_JavaScript数据结构与算法(三)栈
JavaScript 数据结构与算法(三)栈 数组是一个线性结构,并且可以在数组的任意位置插入和删除元素. 但是有时候,我们为了实现某些功能,必须对这种任意性加以限制. 栈和队列就是比较常见的受限的线 ...
- Java数据结构和算法(六)——前缀、中缀、后缀表达式
前面我们介绍了三种数据结构,第一种数组主要用作数据存储,但是后面的两种栈和队列我们说主要作为程序功能实现的辅助工具,其中在介绍栈时我们知道栈可以用来做单词逆序,匹配关键字符等等,那它还有别的什么功能吗 ...
- JAVA数据结构与算法【简单介绍】
前几天去面一个大厂,面试官特别好,面试官说到,我们的学习不能本末倒置,数据结构和算法是程序的基础,如果数据结构你没有学好,你真正意义上不算会写代码.你的代码是各处粘贴,杂乱无章的. 由于现在大多用JA ...
- java算法概述,Java数据结构与算法基础(一)概述与线性结构
Java数据结构与算法基础(二)递归算法 Java数据结构与算法基础(一)概述与线性结构 学习目的:为了能更顺畅的读很多底层API代码和拓宽解决问题的思路 一.数据结构概述 1.数据结构是什么?数据与 ...
- Java数据结构和算法(四)--链表
日常开发中,数组和集合使用的很多,而数组的无序插入和删除效率都是偏低的,这点在学习ArrayList源码的时候就知道了,因为需要把要 插入索引后面的所以元素全部后移一位. 而本文会详细讲解链表,可以解 ...
- java数据结构与算法之顺序表与链表深入分析
转载请注明出处(万分感谢!): http://blog.csdn.net/javazejian/article/details/52953190 出自[zejian的博客] 关联文章: java数据结 ...
- Java数据结构与算法(二)
Java数据结构与算法(二) 第六章 递归 1 递归应用场景 2 递归的概念 3 递归调用机制 4 递归能解决什么样的问题 5 递归需要遵守的重要规则 6 递归-迷宫问题 6.1 迷宫问题 6.2 代 ...
最新文章
- Install Package and Software
- Mysql 连接查询
- 工作310:uni-初始获取数据onload
- 【 HDU - 1525 】Euclid's Game(较难找规律,玄学博弈,分析必败点必胜点)
- LeetCode 932. 漂亮数组(分治递归/循环)
- 使用抓包工具fiddler和apipost进行接口测试
- 开启服务器时启动线程
- gitlab部署、配置更改、备份及恢复
- (三)Mybatis类型转换器,接口传参类型,一对一,一对多查询resultMap配置
- 如何使用Airdrop将视频从Mac发送到iPhone?
- 手机站的拨打电话和发短信
- .git文件过大,如何清理
- go Test Benchmark 性能测试
- 彩虹仿优云宝模板,最新彩虹代shua网仿优云宝发卡网模板
- 经济统计学专业学C语言,经济统计学专业有哪些课程
- 1500个工作计划总结PPT模板免费下载网址
- 最详细教程:Zotero和Better BibTeX安装,以及如何在R markdown中引用文献
- gitlab runner 使用案例
- IT运维和自动化运维以及运维开发有啥不同?能解释下吗?
- 【机器学习】逻辑斯蒂回归原理推导与求解