JAVA基础(65)---栈

版权声明:如需转载请标明出处 https://blog.csdn.net/yj201711/article/details/84259220

定义:只能在表的一端(栈顶)进行插入和删除运算的线性表

逻辑结构:与线性表相同,仍为一对一关系

存储结构:用顺序栈或链栈存储均可,但以顺序栈更常见

运算规则:只能在栈顶运算,且访问结点时依照后进先出(LIFO)或先进后出(FILO)的原则

实现方式:关键是编写入栈和出栈函数,具体实现依顺序栈或链栈的不同而不同

基本操作:入栈、出栈、读栈顶元素值、建栈、判断栈端、栈空等

栈的实现

package org.lanqiao.stack;

public interface IStack {
	/*
	 * 入栈
	 */
	public void push(Object obj);
	/*
	 * 出栈(删除栈顶元素)
	 */
	public Object pop();
	/*
	 * 获取栈顶元素(获取值但不删除栈顶元素)
	 */
	public Object getTop();
	/*
	 * 判断栈是否已满
	 */
	public boolean isMax();
	/*
	 * 判断栈是否为空
	 */
	public boolean isEmpty();
	/*
	 * 遍历栈
	 */
	public void print() ;
}
package org.lanqiao.stack;
/*
 * 采用顺序栈来实现
 */
public class Stack  implements IStack{
	private Object[] stack;//栈的底层本质
	private int capacity =5;//栈的容量
	private int top = -1 ;//栈顶标记
	
	public  Stack() {
		stack = new Object[capacity];
	}
	public Stack(int capacity) {
		
		stack = new Object[capacity];
	}
	

	@Override
	public void push(Object obj) {
		if(isMax()) {
			System.out.println("栈已满,入栈失败。。。");
			return;
		}
		stack[++top] = obj;
	}

	@Override
	public Object pop() {
		if(isEmpty()) {
			System.out.println("栈为空,弹栈失败...");
			return null;
		}
		return stack[top--];
	}

	@Override
	public Object getTop() {
		if(isEmpty()) {
			System.out.println("栈为空,获取栈顶元素失败...");
			return null;
		}
		return stack[top];
	}

	@Override
	public boolean isMax() {
		return top == (capacity -1);
	}

	@Override
	public boolean isEmpty() {
		return top == -1;
	}
	@Override
	public void print() {
		for(int i = 0 ; i <= top;i++) {
			
			System.out.println(stack[i]);
		}
		
	}

}
package org.lanqiao.stack;

public class StackTest {
	public static void main(String[] args) {
		Stack stack = new Stack();
		System.out.println(stack.isEmpty());
		stack.push("aa");
		stack.push("bbb");
		stack.push("cc");
		stack.push("dd");
		stack.push("eee");
		stack.push("ffff");
		stack.print();
		System.out.println("---------------");
		Object top = stack.getTop();
		System.out.println("栈顶元素:" + top);
		stack.pop();
		System.out.println("---------------");
		stack.print();
		System.out.println(stack.isMax());
		
	}
}

       

猜你喜欢

转载自blog.csdn.net/yj201711/article/details/84259220
65