1. 程式人生 > >棧的兩種遍歷方式

棧的兩種遍歷方式

一、普通遍歷

    public void test05(){
        MyLinkedStack<String> myStack = new MyLinkedStack<String>();
        myStack.push("1");
        myStack.push("2");
        myStack.push("3");
        myStack.push("4");
        //如果這麼寫會出現問題
        int x = myStack.length();
        for(int i = 0; i < x; i++){
            System.out
.print(myStack.pop()+" "); } }

二、遞迴遍歷

    //測試棧的遞迴遍歷
    @Test
    public void test04(){
        MyLinkedStack<String> myStack = new MyLinkedStack<String>();
        myStack.push("1");
        myStack.push("2");
        myStack.push("3");
        myStack.push("4");
        //深度優先遍歷
dfs(myStack); } //深度優先遍歷 public void dfs(MyLinkedStack<String> myStack){ if(myStack.length() == 0){ return ; } System.out.print(myStack.pop()+" "); dfs(myStack); }

一開始我覺得棧的遞迴遍歷有多麼高深,其實遞迴最重要的是找到一個遞迴出口。