中缀表达式转后缀表达式并求值c++数据结构链栈应用(Infix to postfix expression evaluation c++ data structure chain stack application).docVIP

中缀表达式转后缀表达式并求值c++数据结构链栈应用(Infix to postfix expression evaluation c++ data structure chain stack application).doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
中缀表达式转后缀表达式并求值c数据结构链栈应用(Infixtopostfixexpressionevaluationcdatastructurechainstackapplication)

中缀表达式转后缀表达式并求值c++数据结构链栈应用(Infix to postfix expression evaluation c++ data structure chain stack application) #定义尺寸40 #包括字符串。” #包括 iostream。” #包括程序。” #定义MaxSize 32 typedef char qelemtype; typedef struct { qelemtype *基地;/ /指向队列的存储空间; 在前面;/ /指向队头元素; 在后;/ /指向队尾元素的下一位置; } SqQueue; 结构中结点的定义 { int数据; 指向同结构的结点; }斯诺德* LinkStack; 无效destroylinstack(将是) { //销毁链栈S. 将温度= S,P; 而(临时) { 温度; 下一个; 免费(P); } } 无效(将推的,字符x) { //入栈。 将温度=(LinkStack)malloc(sizeof(斯诺德)); 温度数据= x; 下一步; s =下一个; } 无效的流行(将 S,char和X) { //出栈。 将温度= S -下; x =温度数据; 下一个; 免费(临时); } int GetTop(将是) { //读栈顶元素。 int x; 如果(下一个) x =下一个数据; 其他的 cout “栈空” endl; 返回x; } 无效initstack(将是) { S =(LinkStack)malloc(sizeof(斯诺德)); 如果(!S) { cout “alloctation错误” endl; 出口(1); } s =下一个= 0; } int InitQueue(sqqueue Q) { //队列的初始化; q.front = q.rear = 0; q.base =(qelemtype *)malloc(MAXSIZE * sizeof(qelemtype)); 如果(!Q.base) 出口(1); q.base [ q.front ] =“0”; 返回1; } int QueueLength(sqqueue Q) { //计算队列的长度; 返回(q.rear-q.front + MAXSIZE)%为; } 无效的EnQueue(sqqueue Q,Qelemtype X) { //入队; 如果(QueueLength(Q)= = MAXSIZE) { cout “入队错误” endl; 返回; } q.base [ q.rear + +] = x; } 无效dispqueue(sqqueue Q) { //输出队列的所有元素; int i = 0,J = q.front; (我在队长(Q)) { cout q.base [J].; 如果(q.base [J] = 48和q.base [J] = 57和q.base [ 1 ] = 48和q.base [ J ] = 57) cout “”; ++; ++; } } 无效destroyqueue(sqqueue Q) { / /队列的销毁; 删除[ ] Q.base; q.base = 0; q.front = q.rear = 0; 返回; } int StackEmpty(将是) { //判断栈是否为空。 返回(s =下一个= 0); } int优先级(字符行) { 开关(操作) { 案例: 返回0; 案例+: 案例“-”: 返回1; 案例*: 案例“/”: 返回2; } } 无效convertpostexp(字符指针,sqqueue后) { 字符集; int i = 0,K = strlen(str); 将S; Initstack(S); 推(s,‘()); InitQueue(后); 而我| | K(!StackEmpty(S)) { C + + + +; 开关(c) { 案例0: 案例1: 案例2: 案例3: 案例4: 案例5: 案例6: 案例7: 案例8: 案例9: EnQueue(后,C); 打破; 案例: 推(s,c); 打破; 案例“”: “案例”: 做{ 流行音乐(s,t); 如果(t!=“() EnQueue(后,T); }(t!=“!StackEmpty(S)); 打破; 案例+: 案例“-”: 案例*: 案例“/”: 而(优先(C)=优先级(GetTop())) { 流行音乐(s,t); EnQueue(后,T); } 推(s,c); 打破; } ++; } destroylinstack(S); } 节点结构体/定义两个两个栈,存放字符 { 字符*基; char * / /头指针顶; 数组的大小; }; 结构/整数栈列表 { 浮底; 浮上; 数组

您可能关注的文档

文档评论(0)

f8r9t5c + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8000054077000003

1亿VIP精品文档

相关文档