재 귀 함수 와 스 택 역순 으로 한 스 택 만 사용 합 니 다.

1480 단어
package stackAndQueue;

import java.util.Stack;

import org.junit.Test;

/**
 *              :ReverseStack【2】
 * 
 * 【       1、2、3,    ,         1、2、3,       ,              】
 * 
 *     :      (getAndRemoveBottom、reverse)
 * 
 * @author xiaofan
 */
public class ReverseStack {
    /**
     *            (    1、2、3  2、3).
     */
    private int getAndRemoveBottom(Stack stack) {
        int result = stack.pop();
        if (stack.empty()) {
            return result;
        } else {
            int bottom = getAndRemoveBottom(stack);
            stack.push(result);
            return bottom; //     ,      1
        }
    }

    /**
     *                   ,    ;
     * 
     *             ,           。
     * 
     * @param stack
     */
    public void reverse(Stack stack) {
        if (stack.empty()) {
            return;
        }
        int i = getAndRemoveBottom(stack); //     1、2、3
        reverse(stack);
        stack.push(i); //     3、2、1
    }

    /     
    @Test
    public void test() {
        Stack stack = new Stack(); // Stack  Vector,     10
        stack.push(1);
        stack.push(2);
        stack.push(3);
        ReverseStack rStack = new ReverseStack();
        rStack.reverse(stack);
        while (!stack.empty()) {
            System.out.println(stack.pop());
        }
    }
}

코드 주소:https://github.com/zxiaofan/Algorithm/blob/master/src/stackAndQueue/ReverseStack.java

좋은 웹페이지 즐겨찾기