数据结构·练习·运算符号的合法性判断

数据结构·练习·运算符号的合法性判断

一、问题描述
一串至多包含加减乘除四则运算的算式,判断其运算符号使用情况是否符合规范。
二、算法概述

1、问题分析

1、问题抽象与分类

  • 算符判断
    多出
  • 括号判断
    左多
    右多

2、算法描述

  • 头文件引用库<stdio.h>,<stdlib.h>和<string.h>
  • 前置函数(置空栈)(出栈)(入栈)
  • 主函数程序:
  1. 定义变量;
  2. 获取输入数据,并为之分配空间;
  3. 排查算符多出的情况;
  4. 排查括号左多的情况;
  5. 排查括号右多的情况;
  6. 结果输出。

三、输入说明
任意输入一串至多包含加减乘除四则运算的算式。
四、输出说明
使用合法则输出“运算符号使用合法”;
算符多出则输出“算符多出!”;
括号左多则输出“左括号多出!”;
括号右多则输出“右括号多出!”;

输入样例1:

{[a+(b+c)]d-e}(f+g)

输出样例1:

运算符号使用合法

输入样例2:

{[a+b+c)]d-+e}(fg

输出样例2:

算符多出!
左括号多出!
右括号多出!

五、程序实现

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define M 100

typedef char datatype;
//定义节点 
typedef struct
{
   
	datatype data[M];
	int Top;
}Stack;
Stack*S;

/*前置函数*/ 

//置空栈
Stack*SetStack(Stack*S)
{
   
	S=(Stack*)malloc(sizeof(Stack));
	S->Top=-1;
	return S;
}

//进栈
Stack*PushS(Stack*S,datatype data)
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值