任务描述
本关任务要求通过实现函数double ComputeInfix(char* s)
来计算中缀表达式。
相关知识
中缀表达式的计算需要用到栈。关于链接存储的栈,其中已实现了如下操作:
-
创建栈:创建一个链式栈。具体操作函数定义如下:
LinkStack* LS_Create()
; -
释放栈:释放栈所占用的空间。具体操作函数定义如下:
void LS_Free(LinkStack* ls)
; -
清空一个栈:将链式栈变为空栈。具体操作函数定义如下:
void LS_MakeEmpty(LinkStack* ls)
; -
判断栈是否为空:若栈为空,则返回
true
,否则返回false
。具体操作函数定义如下:bool LS_IsEmpty(LinkStack* ls)
; -
求栈的长度:获取链式栈的长度。具体操作函数定义如下:
int LS_Length(LinkStack* ls)
; -
将元素 x 进栈:将 x 进栈,若满栈则无法进栈,返回
false
,否则返回true
。具体操作函数定义如下:void LS_Push(LinkStack* ls, T x)
; -
出栈:出栈的元素放入
item
。若出栈成功(栈不为空),则返回true
;否则(空栈),返回false
。具体操作函数定义如下:bool LS_Pop(LinkStack* ls, T& item)
; -
获取栈顶元素:获取栈顶元素放入
item
中。若获取失败(空栈),则返回false
,否则返回true
。具体操作函数定义如下:bool LS_Top(LinkStack* ls, T& item)
; -
打印栈中元素:从栈顶到栈底打印各结点数据元素。具体操作函数定义如下:
void LS_Print(LinkStack* ls)
。
在计算中缀表达式的过程中,你可以根据需要调用以上操作。因为表达式的计算结果可能是浮点数,所以这里将栈的