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

📄 expreforc.cpp

📁 包含各种测试,查找和算法等代码,如冒泡算法,树的遍历,链表,队列,堆栈等
💻 CPP
字号:
//#include <string.h>
#include <ctype.h>
#include <stdlib.h>
#include <iostream.h>

#include "LinStack.h"

template<class T>
void PostExp(LinStack<T> &s, char *Expression);

void main(void)
{
   char Expression[80] = {"1342/-5*+#"};
   LinStack<int> s;

   PostExp(s, Expression);
}

template <class T>
void PostExp(LinStack<T> &s, char *Expression)
//借助堆栈s的中缀表达式Expression到后缀表达式的转换和输出
{
	char ch;
	int x, x1, x2, j = 0;

	ch = Expression[j];						//取第一个单词给x2
	while(ch != '#')									//循环直到转换完毕
	{
		if(isdigit(ch))//ch为操作数
		{
			x = (int)(ch) - 48;
			s.Push(x);							//输出操作数ch
		}
		else		
		{
			x2 = s.Pop();							//把x2入栈
			x1 = s.Pop();						//取新的栈顶元素给x1
			switch(ch)
			{
				case '+': {x1 += x2; break;}
				case '-': {x1 -= x2; break;}
				case '*': {x1 *= x2; break;}
				case '/': {x1 /= x2; break;}
			}
			s.Push(x1);
		}
		ch = Expression[++j];				//继续取下一个单词给x2
	}
	cout << "后缀表达式计算结果为: " << s.Pop() << endl;
}

⌨️ 快捷键说明

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