【数据结构】栈的应用之表达式计算器

本文介绍了如何利用栈数据结构实现表达式计算器,该计算器在处理输入表达式时,通过两个栈分别存储运算符和运算数,根据运算符的优先级进行计算,最终从运算数栈中得到结果。
摘要由CSDN通过智能技术生成

表达式计算器是数据结构书籍里面的一个有趣的例子,感觉这里面已经有点编译原理的味道了,它利用栈来实现表达式的计算。它的基本思路是:初始化两个栈,一个是运算符栈,一个是运算数栈。把输入的字符串扫描一遍,遇到数字字符就把它拼成数字,遇到运算符就判断优先级,如果运算符栈中的优先级比较高,就把运算数栈中的数字弹出栈,与扫到的数字运算并压到运算数栈。如果运算符栈中的优先级比较低,就压栈,继续扫描。直到最后扫描完毕,从运算数栈中取出结果。



package main;
import java.util.*;
import java.io.*;

//=============================
//栈的应用之表达式计算器
//作者:落叶似秋
//日期:2015.7.27
//=============================
public class Main
{
	public static void main(String[] args)
	{
		String str=null;
		System.out.println("\n**请输入表达式,以等号结束**");
		Scanner scan=new Scanner(System.in);
		if(isReasonable(str=scan.next()))
		{
			System.out.println(clearZero(computer(str)));
		}
		else
		{
			System.out.println("表达式不合法");
			
		}
		
		main(null);
	}

	//去掉后面多余的点和零
	private static String clearZero(String str)
	{
		if(str.endsWith(".0"))
		{
			str=str.substring(0,str.length()-2);
		}
		return str;
	}
	//简单验证表达式
	private static boolean isReasonable(String str)
	{
		if(str.length()<=0||!s
经过这学期对数据结构的学习, 我们学习了理论知识, 了解了数据结构设计的思想, 这些知识都为我们的下一步学习打下了坚实的基础。通过课程设计,一方面是为了检查 我们一个学期来我们学习的成果,另一方面也是为了让我们进一步的掌握和运用它,同 时也让我们认清自己的不加以弥补和加强。足之处和薄弱环节,加以弥补和加强。 说起数据结构,它为程序提供了一种思想。计算机本身是无生命的机器,要是计算 机能够运行起来,为人类完成各种各样的工作,就必须让他执行相应的程序,这些程序 都是依靠程序设计语言编写出来的。它是一种思想,在编写程序时可以方便、灵活地运 用。同时,他还向程序员提供了直接操作计算机硬件的功能,具备低级语言的特点,适 合各种类型的软件开发。 说到课程设计,要明确自己的目标。在课设前要明确实训的相关要点,课程设计为 学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结 合起来,锻炼分析解决实际问题的能力。提高适应实际,实践编程的能力。课程设计的 基本理论是该课程设计的 C 语言为基础,掌握程序设计方法,为科学研究中的基层开发 工作奠定良好基础;同时培养学生的分析能力、设计能力和整体设计思想,以提高学生 的科学研究素质和在工作岗位中的具体应用能力。课程设计内容和基本要求,首先课程 设计内容是利用学到的编程知识和编程技巧,通过布置具有一定难度的程序设计题目, 熟悉程序编写,及时查究错误,独立完成。 通过本次课程设计, 自学掌握了随机函数与文件读写的知识, 独立完成了设计任务, 虽然思路和想法还有些不成熟,但是对自己的设计能力有很大的提高,今后仍要更加努 力的深入钻研,是自己的能力有进一步的提高。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值