题目:用递归颠倒一个栈。例如输入栈{1, 2, 3, 4, 5},1 在栈顶。颠倒之后的栈为{5, 4, 3, 2, 1},5 处在栈顶。
假设除了栈顶的元素没有正确外,其下面的元素都已经排列正确了,那么有:
1.pop出栈顶元素,存储在变量top中。
2.将剩余元素依次全部pop到一个临时栈tmp中.
3.将top压入栈中.
4.将tmp中的元素依次压回栈中。
根据分析,有伪代码如下:
- void revstack(Stack<obj> src){
- if(src.Count == 1) return;
- obj top = src.Pop();
- revstack(src);
- Stack<obj> tmp = new Stack<obj>();
- while(src.count!=0){
- tmp.Push(src.Pop());
- }
- src.Push(top);
- while(tmp.count!=0){
- src.Push(tmp.Pop());
- }
- }
阅读(1386) | 评论(0) | 转发(1) |