栈
来源:互联网 发布:超级mac炮 编辑:程序博客网 时间:2024/05/20 18:15
栈的特点:先进后出(LIFO),主要是对栈顶的操作。
作图表示:
下面我们用栈实现字符串反转例子:
1,首先实现我们自己的栈CharStack
public class CharStack { private int maxSize; private char[] arr; private int top; public CharStack(int maxSize) { this.maxSize = maxSize; this.arr = new char[maxSize]; top = -1; } /** * 压人数据 * * @param data */ public void push(char data) { arr[++top] = data; } /** * 弹出数据 */ public int pop() { return arr[top--]; } /** * 访问栈顶元素 */ public int peek() { return arr[top]; } /** * 栈是否为空 */ public boolean isEmpty() { return top == -1; } /** * 栈是否满了 */ public boolean isFull() { return top == (maxSize -1); }}
2,定义实现字符串反转的类
package com.tyj.stack;public class Reverse { private String str; public Reverse(String str) { this.str = str; } /** * 思想:根据栈先进后出的特点,先遍历所有字节push进去,再pop出来 * * @return */ public String doReverse() { int leagth = str.length(); CharStack charStack = new CharStack(leagth); for (int i = 0; i < leagth; i++) { charStack.push(this.str.charAt(i)); } String s = ""; while (!charStack.isEmpty()) { s += (char) charStack.pop() + ""; } return s; }}
3,最后是我们的测试代码。
public class TestReverse { public static void main(String[] args) { Reverse reverse = new Reverse("北京欢迎您!"); System.out.println(reverse.doReverse()); }}
运行结果:!您迎欢京北
0 0