棧的兩種遍歷方式
阿新 • • 發佈:2019-02-14
一、普通遍歷
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);
}
一開始我覺得棧的遞迴遍歷有多麼高深,其實遞迴最重要的是找到一個遞迴出口。