java实现四则混合运算

本文介绍了如何利用栈的数据结构来实现四则混合运算。首先讲解了后缀表达式和四则混合运算的转化步骤,然后阐述了将中缀表达式转化为后缀表达式以及计算后缀表达式的方法。在实现过程中,作者遇到了一些挑战,分享了自己的解决过程。
摘要由CSDN通过智能技术生成

  最近在看数据结构。想要实现四则混合运算。用栈来实现。

  去网上看了好些代码(想偷懒来着)结果代码都不全。思路不清晰。

  看的难受,最后觉得还是自己写吧。学习嘛,偷懒不得。

  栈的本质就是个线性表。结构就是个后进先出的胡同。只能操作线性表表尾元素的插入和删除。

  

  下面是对栈的实现。这些基本是照搬别人的。

package stack;

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 栈的实现,先进后出。
 */
public class Stack {
	// 初始化数组
	public String[] stackArr = new String[16];
	// 栈的顶部
	int top = -1;

	// 出栈操作
	public String pop() {
		return stackArr[top--];
	}

	// 进栈操作
	public void push(String c) {
		// 原数组满了,就扩容1.5倍
		if (isFull()) {
			resize();
		}
		stackArr[++top] = c;
	}
	
	// 清空栈
    public void clear() {     
    	stackArr = null;     
    	top = -1;     
    }   

    // 栈的元素个数
    public int length() {     
        return top + 1;     
    }   
	// 判断栈是否为空
	public boolean isEmpty() {
		return top == -1;
	}

	// 判断栈是否已满
	public boolean isFull() {
		return top == stackArr.length - 1;
	}

	// 取栈顶元素
	public String peek() {
		return stackArr[top];
	}

	/**
	 * 数组扩容,1.5倍长度
	 */
	private void resize() {
		String[] temp = new String[stackArr.length * 3 / 2 + 1];
		for (int i = 0; i < stackArr.length; i++) {
			temp[i] = stackArr[i];
		}
		stackArr = temp;
	}

	public void print (){
		for (int i = 0; i <= top; i++) {
			 System.out.print(stackArr[i]);
		}
	}

}

    

   这里需要讲一下四则混合运算的步骤,

   先科普一下后缀表达式:它是波兰的一个哥们想出来的。名字太长不好记,就被后人称为逆波兰表达式了。

   中缀表达式:9+ (3-1) * 3+10/ 2

   后缀表达式:931一3 * +102/+

 

   1,将中

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值