数据结构 栈基础操作的Java实现

栈:只能一头插入,一头删除
先进后出 first in last out(FILO)
后进先出 last in first out(LIFO)
队列:在一头插入,另一头删除
先进先出 first in first out(FIFO)
双端队列 可以再任意两头进入

存int类型
Class stack{
//属性
//存数据的空间
Int[]array;
//当前栈内元素个数
Int top;//在栈里写作top,表示栈顶元素

//方法(公开)
构造方法

插入数据 (尾插) }

栈的应用:
1)回溯(迷宫问题)
2)后缀表达式解决优先级问题
//创建一个栈
//栈内元素删除
//返回栈顶元素
public void push(int val)【在入栈之前要判断站内空间是否已经满了,如果栈满,则需要扩容】
【在所有操作时,需要注意,栈满不能进栈,栈空不能删除,且无栈顶元素可以返回】


//top初始为0
import java.util.Arrays;

public class Stack {
	private int[] array;
	private int top;
	
	public Stack(int defaultCapacity) {
		array = new int[defaultCapacity];
		top = 0;
	}
	
	public Stack() {
		this(20);
	}
	
	public void push(int val) {
		if (top == array.length) {
			array = Arrays.copyOf(array, array.length * 2);
		}
		array[top++] = val;
	}
	
	public void pop() {
		if (top <= 0) {
			System.out.println("栈为空,无法删除");
			return;
		}
		
		top--;
		array[top] = 0;	// 可加可不加,把所有空的位置保持为 0
	}
	
	public int top() {
		if (top <= 0) {
			System.out.println("栈为空,无法返回栈顶元素");
			return -1;
		}
		
		return array[top - 1];
	}
	
	public int size() {
		return top;
	}
	
	public boolean isEmpty() {
		return top == 0;
	}
}




//top初始为-1,相应参数都要改变
import java.util.Arrays;

public class Stack {
	private int[] array;
	private int top;
	
	public Stack(int defaultCapacity) {
		array = new int[defaultCapacity];
		top = 0;
	}
	
	public Stack() {
		this(20);
	}
	
	public void push(int val) {
		if (top == array.length) {
			array = Arrays.copyOf(array, array.length * 2);
		}
		array[top++] = val;
	}
	
	public void pop() {
		if (top <= 0) {
			System.out.println("栈为空,无法删除");
			return;
		}
		
		top--;
		array[top] = 0;	// 可加可不加,把所有空的位置保持为 0
	}
	
	public int top() {
		if (top <= 0) {
			System.out.println("栈为空,无法返回栈顶元素");
			return -1;
		}
		
		return array[top - 1];
	}
	
	public int size() {
		return top;
	}
	
	public boolean isEmpty() {
		return top == 0;
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值