数据结构-Java实现栈的顺序存储和链式存储

栈的顺序存储

用数组来实现

//栈的顺序存储:用数组来存放元素:数组0端为栈底;length-1端为栈顶
public class MySqStack {
	int[] data;//数组
	int top;//数组的下标

	public MySqStack(int size) {
		data = new int[size];
		top = -1;
	}

	// 进栈
	public boolean push(int element) {
		// 如果栈满,则不能插入
		if (top == data.length - 1) {
			// throw new RuntimeException("stack is empty");
			return false;
		} else {
			top++;
			data[top] = element;
			return true;
		}
	}

	// 出栈
	public int pop() {
		// 如果栈中没有元素
		if (top == -1) {
			throw new RuntimeException("stack is empty");
		} else {
			return data[top--];
		}
	}

	// 取栈顶元素
	public int GetTop() {
		// 如果栈中没有元素
		if (top == -1) {
			throw new RuntimeException("stack is empty");
		} else {
			return data[top];
		}
	}

栈的链式存储

用单链表来实现

public class LinkStack {
	class Node {
		int data;
		Node next;
	}
	// 创建头节点
	private Node header = new Node();

	// 新节点进栈:头插入法:插入头节点之后
	public boolean push(int data) {
		Node node = new Node();
		node.data = data;
		node.next = header.next;
		header.next = node;
		return true;
	}
	//出栈:将头节点之后的节点出栈
	public int pop() {
		if(header.next == null) {
			return -1;
		}
		else {
			int rtn = 0;
			rtn = header.next.data;
			header.next = header.next.next;
			return rtn;
		}
	}
	//取栈顶元素
	public int getTop() {
		if(header.next == null) {
			return -1;
		}
		else {
			return header.next.data;
		}
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值