大家都知道栈是先进后出的一种数据结构。。。
栈是运算受限的线性表(队列也一样), 其实现有顺序存储(数组)和链式存储(链表)两种实现方式。
由于栈的先进后出的特性, 使得它可以在很多场合下都可以大显身手:
1. 数制转换, 比如十进制转八进制
Stack s = new xxxStack();
while(num > 0) {
s.push(num % 8);
num = num / 8;
}
while(!s.isEmpty()) System.out.println(s.pop());
2. 括号匹配 {}, [], ()
思路也是一样的, 比如对于字符串 {(){[]}}
每读入一个字符, 与栈顶top进行比较, 看是不是匹配的另一半, 如果是则出栈, 如果不是则进栈。
3. 判断回文字符串
虽然Java API提供了相关的方法可以直接使用, 但其也有可能是基于栈来实现的(未核实, 需读源代码)。。。(已核实: 基于数组的直接交换。。。)
public static boolean isPlalindrome(String str){
return new StringBuffer(str).reverse().toString().equals(str);
}
【Update】StringBuffer的reverse方法实现, 部分代码:
private static void reverse(char[] value) {
int n = value.length - 1;
for (int j = (n - 1) >> 1; j >= 0; --j) {
char temp = value[j];
char temp2 = value[n - j];
value[j] = temp2;
value[n - j] = temp;
}
}
那如果直接用栈又是如何来实现呢?
那就得分两种情况。
1) 字符串长度为偶数
2) 字符串长度为基数
当为偶数的时候, 只需要把前一半压栈, 然后再遍历后一半, 如果每一个值都和栈顶相同则出栈。 如果任何一个值不匹配, 则可以断定该字符串不是回文字符串。
而对于基数则只需要skip中间的那个字符就可以了, 其他的和偶数情况一致。
分享到:
相关推荐
栈的应用广泛,其中之一就是用于解决算术表达式的求值问题。本文将深入探讨如何利用栈来实现一个算术表达式求值的程序。 首先,我们要理解算术表达式的构成。一个基本的算术表达式可能包含数字、运算符(如加号"+...
数据结构的重要算法应用 ,栈,进制转换,可用于计算的,栈的应用
本课程设计的重点是探讨栈在解决实际问题,特别是表达式计算中的应用。 栈在表达式计算中的应用广泛,最常见的就是逆波兰表示法(Postfix Notation)或称后缀表达式。逆波兰表示法是一种没有括号的表达式表示方式,...
实验三 栈的应用 1.实验目的: 熟悉栈的定义,栈的特点以及栈的基本操作。能够根据实际情况选择合适的存储结构,解决实际问题。 2.实验内容: 对任意给定的一个中缀算术表达式,输出等价的后缀形式。
在提供的压缩包文件`shiyan_3栈的应用`中,可能包含了实现这个功能的源代码,通过阅读和学习这些代码,你可以深入理解栈在实际问题中的应用,以及C++中如何使用栈数据结构来解决实际问题。这样的练习对于提升C++编程...
本主题将探讨栈的一些基本应用以及如何实现这些功能。 1. 符号就近匹配:在编程语言解析和编译过程中,符号就近匹配是常见的应用场景。例如,当解析括号、引号等配对符号时,我们可以通过栈来检查一对括号是否正确...
c++栈的应用 栈类源代码,实现了一个简单的栈类,有栈的基本功能。
栈的实现 链栈的实现 出栈,入栈,栈空 基于栈实现的判断括号配对程序 基于栈实现的中缀表达式转后缀表达式 基于栈实现的后缀表达式计算器
在这个“数据结构作业栈的应用”中,我们主要探讨了栈在三个具体场景下的应用:字符串逆序输出、括号匹配以及数学表达式求值。 1. **字符串逆序输出**: 在这个部分,我们使用栈来实现一个字符串的逆序。栈的基本...
本项目“栈的应用 - 迷宫求解”深入展示了如何利用栈来解决实际问题,特别是解决迷宫问题。迷宫问题是一个经典的路径搜索问题,它在游戏开发、算法设计以及计算机图形学等领域都有广泛应用。 栈在迷宫求解中的作用...
本实验报告将探讨如何实现栈以及其在实际问题中的应用,包括自定义顺序栈、括号匹配检查和后缀表达式求值。 首先,我们来看“实现自己的顺序栈类”。顺序栈通常是在内存中连续分配的一段空间来存储元素,它的优点是...
在IT领域,栈的应用广泛且重要,特别是在处理递推问题和需要临时存储信息的场景中。本篇文章将深入探讨栈在表达式求值、括号匹配以及进制转换等经典算法中的应用。 1. **表达式求值**:在计算机科学中,中缀表达式...
在计算机科学中,栈被广泛应用于各种场景,包括内存管理、函数调用、文本编辑和算法实现等。本篇文章将深入探讨栈结构的应用,并通过具体的示例来阐述其在进制转换和表达式求值中的作用。 一、栈的基本操作 1. **...
【栈的应用——数制转换(C/C++)】 在计算机科学中,数制转换是一种常见的操作,用于在不同数值系统之间转换数字。本程序利用栈(Stack)这一数据结构来实现数制转换,主要涉及十进制到其他进制(如八进制、十六...
在栈的应用实例中,日常生活中的许多行为也可以类比为栈的操作。例如,刷洗盘子时,先洗净的盘子被放置在栈顶,需要时从栈顶取下,符合后进先出的原则。通过这些实例,可以更直观地理解栈结构的特点与应用。 总结来...
栈在计算机科学中有着广泛的应用,特别是在算法实现、编译原理、操作系统等多个领域。 对于本实验而言,我们将重点学习栈的顺序存储结构和链式存储结构。顺序栈是指用一维数组来存储栈中的元素,它的优点是访问速度...
06.栈的基本概念以及顺序栈的应用.ppt
### 栈的应用与后缀表达式的解析 在计算机科学领域,数据结构中的栈是一种非常重要的线性数据结构,它遵循先进后出(Last In First Out, LIFO)的原则。栈在许多算法和程序设计中扮演着核心角色,尤其是在处理括号...
**算法栈的应用与栈的实现** 栈是一种非常基础且重要的数据结构,被称为“后进先出”(Last In First Out, LIFO)的数据结构。在计算机科学中,栈被广泛应用于各种算法和问题解决中。栈的主要操作包括入栈(Push)...
栈的应用广泛,其中之一就是处理括号的匹配问题,这在编程语言解析、编译器设计以及文本编辑器中都至关重要。本主题将深入探讨栈在括号匹配中的应用及其原理。 括号匹配问题源于我们日常编程中的表达式或代码块,...