LALA  
日历
<2009年6月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

导航

留言簿(1)

随笔分类(31)

文章分类(4)

收藏夹(21)

搜索

  •  

积分与排名

  • 积分 - 29227
  • 排名 - 1403

最新随笔

最新评论

阅读排行榜

 
有两个相同的栈,一个里面放着自大到小排列的数,栈顶的数最小,另一个栈是空的.
不允许利用其它的数据结构,只能利用这两个栈,要求把第一个栈里的数字反过来,从
小到大排列,结果还放在原来的那个栈里面。
 1 /**
 2      * 有两个相同的栈,一个里面放着自大到小排列的数,栈顶的数最小,另一个栈是空的.
 3      * 不允许利用其它的数据结构,只能利用这两个栈,要求把第一个栈里的数字反过来,从
 4      * 小到大排列,结果还放在原来的那个栈里面。
 5      */
 6     public static void resortStack(Stack<Integer> stackA, Stack<Integer> stackB){
 7         if(stackA == null || stackB == null)
 8             return;
 9         assert stackA != null && stackB != null;
10         if(stackA.size() <= 1)
11             return;
12         int len = stackA.size();
13         for(int i = 0; i < len - 1; i++){
14             int min = stackA.pop();
15             while(stackA.size() > i)
16                 stackB.push(stackA.pop());
17             stackA.push(min);
18             while(!stackB.empty())
19                 stackA.push(stackB.pop());
20         }
21     }
22     public static void testResortStack(){
23         
24         resortStack(nullnull);
25         Stack<Integer> stackA = new Stack<Integer>();
26         Stack<Integer> stackB = new Stack<Integer>();
27         for(int i = 10; i > 0; i--)
28             stackA.push(i);        
29         System.out.println(stackA.toString());
30         resortStack(stackA, stackB);
31         System.out.println(stackA.toString());
32         
33     }
34     /**
35      * @param args
36      */
37     public static void main(String[] args) {
38         // TODO Auto-generated method stub
39         testResortStack();
40     }
posted on 2009-06-21 01:04 Dest 阅读(867) 评论(0)  编辑  收藏 所属分类: 算法
 
Copyright © Dest Powered by: 博客园 模板提供:沪江博客