用C++程序实现复杂表达式的计算问题

本文介绍了使用C++编程解决复杂表达式计算的方法,主要涉及堆栈设计和算符优先级处理。通过创建双向链表堆栈,分为字符串堆栈、算符堆栈和操作数堆栈,然后详细描述了算法的实现步骤,包括不同情况下的计算操作和退栈操作,最终得出表达式的计算结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


在很多数据结构的经典教材中都提到了如何求解复杂表达式的问题,核心是堆栈的设计和算符优先级的设计。我用BCB6实现了这个问题,简单的谈一下我的思路。


Step-1:设计堆栈结构,双向链表。


Struct LinkingStack

{

      String  data;

      LinkingStack   *front;   //前指针

      LingkingStack   *next;    //后指针

}


Step-2:创建三个堆栈,字符串堆栈Base,算符堆栈=baseOS,操作数堆栈=baseNS


LinkingStack *Base=new LinkingStack;

LinkingStack *baseNS=new LinkingStack;

LinkingStack *baseOS=new LinkingStack;


设置游标指针:

Linking *p=Base;

Linking *NS=baseNS;

Linking *OS=baseOS;


Step-3:算法实现


3.1 算法的总体结构设计



3.2  对Block-1的程序描述


1)当出现第一种情况:不执行计算操作,只执行OS堆栈的退栈操作


    #
# do  
)   do

   if((y=="#" && x=="#")||(y=="(" && x==")"))
       {
           OS=OS->front;
           OS->next=NULL;
           goto flag1;

      }


2)当出现第二种情

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值