抄代码DAY7

本文介绍了栈这一重要的数据结构,详细阐述了栈的特性——后进先出(FILO),并展示了如何使用数组实现一个简单的栈。通过实例代码演示了栈的创建、入栈、出栈操作,以及其在深度优先遍历和括号匹配等问题中的应用。
摘要由CSDN通过智能技术生成

昨日写完了链表的基本操作,今天学习栈。

栈是一种特殊的数据结构,是操作受限的线性表,可以说是限定性的数据结构。

栈是限定仅在表尾进行插入或者删除的线性表。对于栈来说,表尾端称为栈顶,表头端称为栈底。不含元素的空表称为空栈。因为栈限定在表尾进行插入或者删除,简单说就是后进先出(FILO)。栈在日常编程中使用广泛。

通常使用设置栈顶指针来实现栈的一系列操作。本代码中depth可以理解为栈顶指针的作用,

首先来定义栈,

public static final int MAX_DEPTH = 10;
		int depth;
		char[] data;

然后创建一个空栈,初始depth为0,

		public CharStack() {
			depth = 0;
			data = new char[MAX_DEPTH];
		}

重写toString方法:

public String toString() {
			String resultString = "";
			for (int i = 0; i < depth; i++) {
				resultString += data[i];
			} 

入栈操作 :

public boolean push(char paraChar) {
			if (depth == MAX_DEPTH) {
				System.out.println("Stack full.");
				return false;
			} //判断是否栈满,栈满不允许入栈

			data[depth] = paraChar;//入栈
			depth++;

			return true;
		}

出栈操作:

	public char pop() {
			if (depth == 0) {
				System.out.println("Nothing to pop.");
				return false;
			} // 判断是否为栈空,栈空报错

			char resultChar = data[depth - 1];//出栈
			depth--;

			return resultChar;
		}

测试一下:

		public static void main(String args[]) {
			CharStack tempStack = new CharStack();

			for (char ch = 'a'; ch < 'g'; ch++) {
				tempStack.push(ch);//a到m依次入栈
				System.out.println("The current stack is: " + tempStack);
			}//显示栈内元素

			char tempChar;
			for (int i = 0; i < 6; i++) {
				tempChar = tempStack.pop();//依次出栈
				System.out.println("Poped: " + tempChar);
				System.out.println("The current stack is: " + tempStack);
			} 
		}

运行结果:

 总结:栈在实际开发中应用广泛,例如深度优先遍历算法,括号匹配等。栈也可以用链表来存储。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值