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 

 

猜你喜欢

转载自blog.csdn.net/legendaryhaha/article/details/78993771