用c++实现浮点数的加减乘除(顺序栈)数据结构 项目 大作业

首先申明头文件

#include "stdafx.h"
#include "iostream"
#include <stdio.h>
#include <string.h>	  // 用于获取字符串长度
#include <stdlib.h>
using namespace std; 

定义栈相关的变量及函数操作

// 定义栈结构
typedef struct 
{
	double *data;	 // 数据域数组名
	int top;		 // 栈顶
	int stackSize;   // 栈最大可用容量
} Stack;

// 初始化栈,输入栈名和容量
void initStack(Stack *stack, int stackSize) 
{
	stack->data = new double[stackSize];	// 申请一段连续的double类型空间,首地址赋值给data
	stack->top = -1;	// 栈顶初始化为-1,代表栈空
	stack->stackSize = stackSize;	// 赋值栈的容量
}

// 判断栈是否为空,为空返回1,非空返回0
int isEmpty(Stack *stack) 
{
	return stack->top == -1;   // 判断栈顶是否为-1,是则代表栈空,输出1
}

// 将值入栈
void push(Stack *stack, double value) 
{
	if (stack->top < stack->stackSize - 1)   // 栈顶未到最大容量
	{
		stack->data[++stack->top] = value;	 // 栈顶先自增,再存放元素
	}
	
	else 
	{
		cout << "栈满!" << endl;
	}
}

// 出栈,返回出栈的元素值,栈空返回0
double pop(Stack *stack) 
{
	if (!isEmpty(stack))	// 栈非空
	{
		return stack->data[stack->top--];	// 先取栈顶元素,栈顶再自减
	}
	
	else 
	{
		cout << "栈空!" << endl;
		
		return 0; // 栈为空时返回一个默认值
	}
}

// 获取栈顶元素
double getTop(Stack *stack) 
{
	if (!isEmpty(stack)) 	// 栈非空
	{
		return stack->data[stack->top];	 // 返回栈顶元素值
	}
	
	else   // 栈空
	{
		return 0; // 栈为空时返回一个默认值
	}
}

// 释放栈空间
void destroy(Stack *stack)
{
	delete[] stack->data;
	stack->top = -1;
	stack->stackSize = 0;
}

定义数与表达式相关的函数操作

// 判断是否为操作符(+ - * /和左右小括号),是则返回1,不是返回0
int isOperator(char ch) 
{
	return (ch == '+' || ch == '-' || ch == '*' || ch == '/' || ch == '(' || ch == ')');
}

// 判断是否为数字,是则返回1,不是返回0
int isNumber(char ch)
{
	return (ch >= '0' && ch <= '9');
}

// 判断是否为合法表达式
int isCorrectExpression(char *expression)
{
	int i = 0;    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值