Java - - 数组实现栈基本功能

来源:互联网 发布:gartner 云计算 2017 编辑:程序博客网 时间:2024/05/21 08:38



Java代码  收藏代码
  1. package com.ct.stack;  
  2.   
  3. /** 
  4.  * @author Chalmers 
  5.  * @version 创建时间:2015年10月24日 下午10:10:13 
  6.  */  
  7. public class StackDemo {  
  8.   
  9.     // 初始容量  
  10.     private int capacity = 10;  
  11.     // 增量  
  12.     private double increment = 1.5;  
  13.     // 栈中数据数量  
  14.     private int length = 0;  
  15.     // 用来实现栈功能的数组  
  16.     private Object[] src = new Object[capacity];  
  17.   
  18.     //默认大小  
  19.     public StackDemo() {  
  20.   
  21.     }  
  22.   
  23.     // 自定义初始栈的大小  
  24.     public StackDemo(int initCapacity) {  
  25.         this.capacity = initCapacity;  
  26.     }  
  27.   
  28.     // 判断栈是否为空  
  29.     public boolean isEmpty() {  
  30.   
  31.         return length == 0 ? true : false;  
  32.     }  
  33.       
  34.     //扩充栈的容量  
  35.     public Object[] extend(){  
  36.         Object[] dest = new Object[(int)(src.length * increment)];  
  37.           
  38.         System.arraycopy(src, 0, dest, 0, src.length);  
  39.           
  40.         return dest;  
  41.     }  
  42.       
  43.     //压栈  
  44.     public void push(Object obj){  
  45.         if(length >= src.length){  
  46.             src = extend();  
  47.         }  
  48.           
  49.         src[length] = obj;  
  50.         length ++;  
  51.     }  
  52.       
  53.     //取栈顶元素  
  54.     public Object peek(){  
  55.           
  56.         if(isEmpty()){  
  57.             throw new NullPointerException();  
  58.         }  
  59.           
  60.         return src[length-1];  
  61.     }  
  62.       
  63.     //取出栈顶元素并删除  
  64.     public Object pop(){  
  65.         if(isEmpty()){  
  66.             throw new NullPointerException();  
  67.         }  
  68.           
  69.         length --;  
  70.         return src[length];  
  71.     }  
  72.       
  73.     //获得栈的元素个数  
  74.     public int size(){  
  75.           
  76.         return length;  
  77.     }  
  78. }  

伦理片 http://www.dotdy.com/

测试类 
Java代码  收藏代码
  1. package com.ct.stack;  
  2. /**  
  3.  * @author Chalmers 
  4.  * @version 创建时间:2015年10月24日 下午10:30:51  
  5.  */  
  6. public class StackTest {  
  7.   
  8.     public static void main(String[] args) {  
  9.         StackDemo sd = new StackDemo();  
  10.           
  11.         for(int i=0; i<20; i++){  
  12.             sd.push(new Integer(i));  
  13.         }  
  14.           
  15.         while(!sd.isEmpty()){  
  16.             System.out.print("栈的大小: "+sd.size()+" ");  
  17.             System.out.println("栈顶元素为: "+sd.pop());  
  18.         }  
  19.         //sd.pop();  
  20.     }  
  21. }  

影音先锋电影 http://www.iskdy.com/

输出结果为: 
栈的大小: 20 栈顶元素为: 19 
栈的大小: 19 栈顶元素为: 18 
栈的大小: 18 栈顶元素为: 17 
栈的大小: 17 栈顶元素为: 16 
栈的大小: 16 栈顶元素为: 15 
栈的大小: 15 栈顶元素为: 14 
栈的大小: 14 栈顶元素为: 13 
栈的大小: 13 栈顶元素为: 12 
栈的大小: 12 栈顶元素为: 11 
栈的大小: 11 栈顶元素为: 10 
栈的大小: 10 栈顶元素为: 9 
栈的大小: 9 栈顶元素为: 8 
栈的大小: 8 栈顶元素为: 7 
栈的大小: 7 栈顶元素为: 6 
栈的大小: 6 栈顶元素为: 5 
栈的大小: 5 栈顶元素为: 4 
栈的大小: 4 栈顶元素为: 3 
栈的大小: 3 栈顶元素为: 2 
栈的大小: 2 栈顶元素为: 1 
栈的大小: 1 栈顶元素为: 0
0 0
原创粉丝点击