数据结构--栈

栈的简要介绍

栈,是一种常用和重要的数据结构,是一种只能在一段进行插入和删除的表。表中允许插入和删除的地方成为栈顶。栈的主要特点时“后进先出”(FILO,即First in last out),每次进栈的数据元素都放在当且栈顶元素之上,成为新的栈顶元素,每次出栈的都是当前栈顶元素。

栈的Java实现

在Java 中利用数组实现的栈,包含两个方法入栈方法add(int add)和出栈方法get(),栈类中有数组arr来存放数据,left来记录栈顶元素位置。left=0时为空栈。

public class StackTest {
	
	private int[] arr=new int[20];
	private int left=0;
	
	public void add(int add) {
		if(left>=arr.length) {
			int[]  newarr=new int[arr.length*2];
			for(int i=0;i<arr.length;i++) {
				newarr[i]=arr[i];
			}
			arr=newarr;
		}
		arr[left]=add;
		left++;
	}
	
	public Integer get() {
		if(left==0) {
			return null;
		}
		if(left*4 <= arr.length) {
			int length=arr.length/2;
			if(length<20) {
				length=20;
			}
			int[]  newarr=new int[length];
			for(int i=0;i<left;i++) {
				newarr[i]=arr[i];
			}
			arr=newarr;
		}
		
		int result=arr[left-1];
		left--;
		return result;
	}
}

入栈方法中,实现了对栈的扩容,当当前栈长度不够时,申请一个2倍于原来栈长的数组存放数据信息,栈长变为原来的2倍。同理,出栈时,空余过多栈内空间时,会对内存进行浪费,当栈顶left指到当前栈长的四分之一时,同理栈长减少到原来的二分之一。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值