栈的应用

来源:互联网 发布:2016年驾校招生数据 编辑:程序博客网 时间:2024/06/11 10:47

栈的应用篇1:后缀表达式的计算

栈作为一种运算受限的后进先出的线性表,其应用面很广,最主要的是在于它的记忆功能,在中断,递归函数中运用灵活,今总结栈的一个小应用,即用于后缀表达式的计算,具体过程如下:

#include <iostream> using namespace std;#define MAXSIZE 100/**  函数功能:    计算后缀表达式的值,其中后缀式存于一数组exp中,最后一个字符是'\0',    作为结束符,且假设后缀表达式中的数字只有一位,除法当做整除。**///计算两个数字之间的运算,包括加减乘除运算int op(int a,char ch,int b){   if(ch == '+') return a+b;   if(ch == '-') return a-b;   if(ch == '*') return a*b;   if(ch == '/')   {       if(b == 0)        {           cout<<"ERROR"<<endl;           return 0;       }else           return a/b;    }}//后缀式计算函数,利用栈的思想int comp(char exp[]){    int i=0,c=0,a=0,b=0;    //构建一个栈并初始化,这种构建方式不浪费空间    int stack[MAXSIZE];    int top = -1;    char OP;    while(exp[i] != '\0') //也可用for循环    {        if(exp[i]>='0' && exp[i]<='9')            stack[++top] = exp[i]-'0'; //将字符型转化成整形并入栈        else        {            OP = exp[i]; //去运算符            b = stack[top--]; //取得第二个操作数,因第二个后入栈            a = stack[top--]; //取得第一个操作数,下同            c = op(a,OP,b); //计算运算结果            stack[++top] = c; //操作结果入栈        }        ++i; //自增1    }    return stack[top];}int main(void){    int vol;    char test[10] = {'4','5','+','6','2','*','+','4','/','\0'};    vol = comp(test);    //cout<<vol<<endl;    cout<<"运算结果为: "<<vol<<endl;    return 0;}

与君共勉~

原创粉丝点击