您的位置:首页 > 职场人生

面试算法——4.栈的反转

2015-12-08 10:03 447 查看
将已知的栈,利用递归实现反转。

附加字符串的反转,总结反转的递归思路。

package ch_1_stackandqueue;

import java.util.Stack;

public class Pro_3_ReverseStack {

private int getLastElement(Stack<Integer> stack)
{
int res=stack.pop();
if(stack.isEmpty())
{
return res;
}
else
{
int last=getLastElement(stack);
stack.push(res);
return last;
}
}

public void reverse(Stack<Integer> stack)
{
if(stack.isEmpty())
{
return;
}
else {
int i = getLastElement(stack);
reverse(stack);
stack.push(i);
System.out.println(i);
}
}

public String reverse_String(String string)
{
if(string.length()<=0)
{
return "";
}else
{
return string.charAt(string.length()-1)+reverse_String(string.substring(0,string.length()-1));
}
}

static Stack<Integer> stack;
public static void main(String[] args) {
// TODO Auto-generated method stub
Pro_3_ReverseStack test = new Pro_3_ReverseStack();

//将顺序反转,一般递归思路是将最后一个特殊处理
//剩下部分再反转
//递归终止条件是为空
//System.out.println(test.reverse_String("123"));;
stack = new Stack<>();
stack.push(1);
stack.push(2);
stack.push(3);
stack.push(4);

test.reverse(stack);
/*while(!stack.isEmpty())
{
System.out.println(stack.pop());
}*/
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: