java数据结构里的栈

栈作为一种存储数据的结构,它的原理是后进先出表(Last In First Out, 简称LIFO,有人说是先进后出道理一样别被绕晕233)其限制是仅允许在表的一端进行插入和删除运算,把对栈进行运算的一端称为栈顶,另一端称为栈底,当我们向一个栈插入新元素称为入栈或进栈此时调用Push()方法,从栈删除元素称为退栈或出栈,调用Pop()方法。就像子弹夹,先压入子弹的最后才射出。关于它的举例像括号匹配问题,迷宫问题等将在后面文章更新中列出。下面是是栈的代码(实际运用中,它是已封装好的类可直接调用,但我们也要了解掌握好它的思路)。

 

package csnd;

public class Stackx {
	private int array[];
	private int top;
	private int maxSize;
	public Stackx() {
		
	}
	public Stackx(int max) {
		top=-1;
		maxSize = max;
		array = new int[maxSize];
	}
    public void push(int number) {//进栈,将每个元素压入栈底
        array[++top] = number;
	}
    public int pop() {//出栈,可理解为删除,但不是真正意义上的让它消失,在内存中它还是在那里,只有当其他元素进来时才会将它覆盖
    	return array[top--];//这里要top--了,如果是--top那在出栈时判断是否为空会发生数组越界,因为--top会先减一
    			
	}
    public int peek() {//查看栈顶的元素
		return array[top];
	}
    public boolean isEmpty() {
		return (top == -1);
	}
    public boolean isFull() {
		
        return (top == maxSize-1);
	}
    public static void main(String[] args) {
		Stackx theStack = new Stackx(10);
		//用户在调用push()方法时,实际上还要调用isFull()方法判断栈是否是满的,这里省了
		theStack.push(10);
		theStack.push(25);
		theStack.push(78);
		theStack.push(15);
		while(!theStack.isEmpty())
		{
			int value = theStack.pop();//出栈,从栈顶逐个弹出元素
			System.out.print(value+" ");
		}
		System.out.println();
	}
}

//运行结果

 

15 78 25 10 
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

legendaryhaha

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值