栈的应用 - 计算中缀表达式(数据结构与算法 - 计算表达式)

本关任务要求通过实现函数double ComputeInfix(char* s)来计算中缀表达式。

相关知识

中缀表达式的计算需要用到栈。关于链接存储的栈,其中已实现了如下操作:

  1. 创建栈:
    创建一个链式栈。具体操作函数定义如下:
LinkStack* LS_Create()
  1. 释放栈:
    释放栈所占用的空间。具体操作函数定义如下:
void LS_Free(LinkStack* ls)
  1. 清空一个栈:
    将链式栈变为空栈。具体操作函数定义如下:
void LS_MakeEmpty(LinkStack* ls)
  1. 判断栈是否为空:
    若栈为空,则返回true,否则返回false。具体操作函数定义如下:
bool LS_IsEmpty(LinkStack* ls)
  1. 求栈的长度:
    获取链式栈的长度。具体操作函数定义如下:
int LS_Length(LinkStack* ls)
  1. 将元素 x 进栈:
    将 x 进栈,若满栈则无法进栈,返回false,否则返回true。具体操作函数定义如下:
void LS_Push(LinkStack* ls, T x)
  1. 出栈:
    出栈的元素放入item。若出栈成功(栈不为空),则返回true;否则(空栈),返回false。具体操作函数定义如下:
bool LS_Pop(LinkStack* ls, T& item)
  1. 获取栈顶元素:
    获取栈顶元素放入item中。若获取失败(空栈),则返回false,否则返回true。具体操作函数定义如下:
bool LS_Top(LinkStack* ls, T& item)
  1. 打印栈中元素:
    从栈顶到栈底打印各结点数据元素。具体操作函数定义如下:
void LS_Print(LinkStack* ls)

在计算中缀表达式的过程中,你可以根据需要调用以上操作。因为表达式的计算结果可能是浮点数,所以这里将栈的数据元素类型设置为了double类型。

typedef double T;  // 数据元素类型

此外,为了计算中缀表达式,我们定义了如下函数,其中的 1)已经实现,你需要实现 2):
1):

void
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

【执珪】瑕瑜·夕环玦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值