栈的理解

 

1. 栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。

2. 栈的优势是,存取速度比堆要快,仅次于直接位于CPU中的寄存器。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。另外,栈数据可以共享,详见第3点。堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,Java的垃圾收集器会自动收走这些不再使用的数据。但缺点是,由于要在运行时动态分配内存,存取速度较慢。

 

class Stackx{
	
	public static void main(String[] args) {
		Stackx x = new Stackx(10);
		x.push(1);
		x.push(4);
		System.out.println(x.peek());
		x.pop();
		System.out.println(x.peek());
		x.push(6);
		System.out.println(x.peek());
		System.out.println(x.isFull());
		System.out.println(x.doRev("12345"));
		
	}
	
	private int maxSize;
	private long[] stackArray;
	private int top;
	
	public Stackx(int size){
		top = -1;
		stackArray = new long[size];
		maxSize = size;
	}
	
	public void push(long value){
		stackArray[++top] = value;
	}
	
	public long pop(){
		return stackArray[top--];
	}
	
	public long peek(){
		return stackArray[top];
	}
	
	public boolean isFull(){
		return (top == maxSize);
	}
	public int gettop(){
		return top;
	}
	public String doRev(String value){
		Stackx s = new Stackx(value.length());
		String output = "";
		char[] valueArray = value.toCharArray();
		System.out.println(valueArray);
		for(int i = 0; i < value.length(); i++){
			s.push(Integer.parseInt(String.valueOf(valueArray[i])));
		}
		
		while(s.gettop() != -1){
			output += s.pop();
		}
		
		return output;
	}
	
	public String toString(){
		StringBuilder sb = new StringBuilder();
		for(long v:stackArray){
			sb.append(v);
			sb.append(",");
		}
		return sb.toString();
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值