用逆波兰表达式完成简单计算器

本文档介绍了如何使用逆波兰表达式(RPN)来创建一个简单的计算器。通过定义和实现相关数据结构如栈,以及包含计算逻辑的函数,实现了从中缀表达式到后缀表达式的转换并进行计算。
摘要由CSDN通过智能技术生成

###definition.h

#pragma once
#include<stdio.h>
#include<windows.h>
#include<assert.h>
#define len 10
#define Stack_size 20
typedef enum comput //运算
{
	OP_NUM=1,//操作数
	OP_SYMBOL=2,//操作符:加减乘除
	OP_ADD=3,   
	OP_SUB=4,
	OP_MUL=6,
	OP_DIV=7,
}comput;

typedef struct Cell //顺序表内,栈内存储的元素(有两个成员)
{
	comput _type;//类型:操作数/操作符
	int value;   //      数值/(add/sub/mul/div)
}Cell;
typedef Cell DataType;

typedef struct Stack
{
	DataType* _array;//数组指针
	size_t  _top; //栈顶 
	size_t  _end;//最大容量
}Stack;

typedef struct SeqList
{
	DataType *a;
	size_t size;
	size_t capacity;
}SeqList;

###test.c

#include"functions.h"
// 思路:
//1.用户输入前缀表达式,将式存入顺序表A
//2.将前缀表达式转化为后缀表达式,并存入顺序表B中
//3.对B内后缀表达式运算(借助一个栈临时存储操作符),并输入结果
void test()
{

	SeqList list, list1;
	Stack s;
	SeqInit(&list);
	SeqInit(&list1);
	StackInit(&s);
	SeqPushBack(&list, OP_NUM, 3);
	Seq
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值