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

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;
}
}


测试类
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();
}
}



[size=large]输出结果为:[/size]
栈的大小: 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值