- package com.ct.stack;
- /**
- * @author Chalmers
- * @version 创建时间:2015年10月24日 下午10:10:13
- */
- public class StackDemo {
- // 初始容量
- private int capacity = 10;
- // 增量
- private double increment = 1.5;
- // 栈中数据数量
- private int length = 0;
- // 用来实现栈功能的数组
- private Object[] src = new Object[capacity];
- //默认大小
- public StackDemo() {
- }
- // 自定义初始栈的大小
- public StackDemo(int initCapacity) {
- this.capacity = initCapacity;
- }
- // 判断栈是否为空
- public boolean isEmpty() {
- return length == 0 ? true : false;
- }
- //扩充栈的容量
- public Object[] extend(){
- Object[] dest = new Object[(int)(src.length * increment)];
- System.arraycopy(src, 0, dest, 0, src.length);
- return dest;
- }
- //压栈
- public void push(Object obj){
- if(length >= src.length){
- src = extend();
- }
- src[length] = obj;
- length ++;
- }
- //取栈顶元素
- public Object peek(){
- if(isEmpty()){
- throw new NullPointerException();
- }
- return src[length-1];
- }
- //取出栈顶元素并删除
- public Object pop(){
- if(isEmpty()){
- throw new NullPointerException();
- }
- length --;
- return src[length];
- }
- //获得栈的元素个数
- public int size(){
- return length;
- }
- }
伦理片 http://www.dotdy.com/
测试类- package com.ct.stack;
- /**
- * @author Chalmers
- * @version 创建时间:2015年10月24日 下午10:30:51
- */
- public class StackTest {
- public static void main(String[] args) {
- StackDemo sd = new StackDemo();
- for(int i=0; i<20; i++){
- sd.push(new Integer(i));
- }
- while(!sd.isEmpty()){
- System.out.print("栈的大小: "+sd.size()+" ");
- System.out.println("栈顶元素为: "+sd.pop());
- }
- //sd.pop();
- }
- }
影音先锋电影 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