实验一 线性表及其应用 算术表达式求值

本文介绍了线性表的应用,重点探讨了如何使用线性表进行中缀表达式到后缀表达式的转换,并详细阐述了后缀表达式在计算算术表达式中的价值和步骤。
摘要由CSDN通过智能技术生成

实验内容:算术表达式求值 表达式求值是实现程序设计语言的基本问题之一,也是栈的应用的一个典型例子。设计一个程序,演示用算符优先法对算术表达式求值的过程。 实验要求: (1)从键盘输入任意一个语法正确的(中缀)表达式,显示并保存该表达式。 (2)利用栈结构,把上述(中缀)表达式转换成后缀表达式,并显示栈的状态变化过程和所得到的后缀表达式。 (3)利用栈结构,对上述后缀表达式进行求值,并显示栈的状态变化过程和最终结果。

#include <iostream>
#include <cstdlib>

using namespace std;
const int N =100;
char input[N];            //中缀表达式数组
char result[N];           //后缀表达式数组
struct stack              //char数据类型栈
{
    int top;
    char data[N];
};
stack op;                 //定义运算符栈
void printop()            //打印运算符栈中的元素
{
    cout <<"运算符栈中元素为:";
    for(int k =N-1;k >=op.top;k--)
        cout <<op.data[k] <<" ";
    cout <<endl;
}
void makenull(stack &s)   //置空
{
    s.top =N;
}
bool empty(stack s)       //判空
{
    if(s.top >=N)
        return true;
    else
        return false;
}
char top(stack s)         //栈顶元素
{
    if(empty(s))
        return NULL;
    else
        return (s.data[s.top]);
}
void pop(stack &s)        //弹栈
{
    s.top += 1;
    printop();
}
void push(char x,stack &s)   //压栈
{
    s.top -= 1;
    s.data[s.top] =x;
    printop();
}

struct num               //double数据类型栈
{
    int top;
    double data[N];
};
num value;               //定义运算结果栈
void printvalue()        //打印运算结果栈中的元素
{
    cout <<"运算结果栈中元素为:";
    for(int k =N-1;k >=value.top;k--)
        cout <<value.data[k] <<" ";
    cout <<endl;
}
void makenull(num &v)    //置空
{
    v.top =N;
}
bool empty(num v)        //判空
{
    i
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值