⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 expression.cpp

📁 这是数据结构课程的试验源代码
💻 CPP
字号:
#include <iostream.h>
#include "stack.h"
#include "Expression.h"
;

//建立一个数组Exp和一个堆栈s
//先把输入的数学表达式存储到数组Exp中
//从数学表达式的第一个字符开始遍历表示式
//遇到非运算符的字符直接输出,遇到运算符与栈底运算符作相应比较
bool Compare(char a,char b)		//比较遍历到的运算符号和目前栈底符号的优先级大小
{
	if((a == 42||a == 47)&&(b == 43||b == '-'))
		return false;	//遍历到的运算符大于栈底符号的优先级时为“假”
	else return true;
}

void main()
{
	char Exp[ExpLength];
	cout<<"请输入数学表达式:"<<endl;
	cin.getline(Exp,ExpLength);		//把输入的表达式存储到数组中
	SeqStack S;		//建立一个堆栈s
	InitStack(&S);
	cout<<"所输入的数学表达式的后缀表达式为:"<<endl;
	int i = 0;		//从数组的第一个元素开始遍历
	while(Exp[i] != 0)
	{
		char item = Exp[i];
		if(item !='+' && item !='-' && item !='*' && item !='/')	//非运算符直接输出
			cout<<item;
		else
		{
			if(S.top == -1)		//栈底无元素时直接存储
			{
				Push(&S,item);
			}
			else
				if(Compare(item,S.data[S.top]))		//当前运算符不大于栈底运算符的优先级时
					{
						do
						{
							cout<<Pop(&S);		//取出栈底运算符
							if(S.top == -1) break;	//取出栈底运算符后如果栈空则跳出循环	
						}
						while(Compare(item,S.data[S.top]));
						Push(&S,item);		//把当前运算符压入堆栈
					}
				else Push(&S,item);
		}
		i++;
	}
	while(S.top != -1)	//依次取出栈中剩余运算符
	{
	cout<<Pop(&S);
	};
	cout<<endl;























































































































































}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -