来源:互联网 发布:超级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