数据结构--栈

不同结构类型的介绍:


数组  链表  树  适用于数据库应用中作数据记录

int [] a=new int[10]
a[1]=100;
int b=a[1];
可以通过下标随时访问,也就是不受限访问

栈和队列  


1.通常情况适用于作为程序员的工具来运用                 

2.受限访问(表现形式是先进后出)
3.更加抽象(主要通过接口实现)

栈:一组记录,表现形式是先进后出,
peek:查看,就是返回数据
pop:从栈中删除最顶端的元素,然后返回数值
push:在栈的最顶端插入一个数据
 

java代码:

public class Stack {

	private long[] stackArray;//定义一个栈数组
	
	private int max;
	
	private int top;
	
	public Stack(int s) {
		// TODO Auto-generated constructor stub
		max=s;
		stackArray=new long[max];
		top=-1;//初始没有数据的时候
		
	}
	//添加数据
	public void push(long j){//添加数据
		stackArray[++top]=j;
		
	}
	
	//查看并删除数据
	public long pop(){
		return stackArray[top--];
	}
	
	//只查看不删除
	public long peek(){
		return stackArray[top];//不删除,直接返回数据
	}
	
	//判断是不是为空
	public boolean isEmpty(){
		return top==-1;
	}
	
	//判断是否满了
	
	public boolean isFull(){
		return top==(max-1);
	}
	
	public static void main(String[] args) {
		Stack stack=new Stack(10);
		
		//先进后出
		stack.push(10);
		stack.push(5);
		stack.push(20);
		stack.push(4);
		stack.push(50);
		
		while(!stack.isEmpty()){
			long value=stack.pop();
			System.out.print(value+" ");
		}
		
		System.out.println();
		
		if(!stack.isFull())//如果栈不满的话就往里面放数据
			stack.push(1);
		if(!stack.isFull())
			stack.push(2);	
		if(!stack.isFull())//如果栈不满的话就往里面放数据
			stack.push(3);
		if(!stack.isFull())
			stack.push(4);	
		if(!stack.isFull())//如果栈不满的话就往里面放数据
			stack.push(5);
		if(!stack.isFull())
			stack.push(6);	
		if(!stack.isFull())//如果栈不满的话就往里面放数据
			stack.push(7);
		if(!stack.isFull())
			stack.push(8);	
		if(!stack.isFull())//如果栈不满的话就往里面放数据
			stack.push(9);
		if(!stack.isFull())
			stack.push(10);	
		if(!stack.isFull())//如果栈不满的话就往里面放数据
			stack.push(11);
		if(!stack.isFull())
			stack.push(12);	
		
		while(!stack.isEmpty())
		{
			long value=stack.pop();
			System.out.print(value+" ");
		}
		System.out.println();
		System.out.println(stack.isEmpty());//判断是不是为空
		
		
	}
	
		
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值