单向链表应用
来源:互联网 发布:英雄联盟辅助软件 编辑:程序博客网 时间:2024/05/18 03:32
给出一个四则运算表达式,其中每个数字均为小于等于9且大于等于0。不考虑溢出,计算结果。表达式如"1+2*3-6+5-8/2+1+7"。
#include <iostream>using namespace std;struct Node{ int value; Node *next;};int calculate(char a[]){ if (NULL == a) { return 0; } Node *head = new Node(); head->value = a[0] - '0'; Node *p = head; char *q = (a + 1); while ('\0' != *q) { Node *temp = new Node(); if (*q <= '9' && *q >= '0') { temp->value = *q - '0'; } else { temp->value = *q; } p->next = temp; p = p->next; q++; } p->next = NULL; // 计算乘除 p = head; while (NULL != p) { if (p->next != NULL && (p->next->value == '*' || p->next->value == '/')) { if (p->next->value == '*') { p->value = (p->value) * (p->next->next->value); } else { p->value = (p->value) / (p->next->next->value); } Node *temp = p->next; p->next = p->next->next->next; delete temp->next; delete temp; } else { p = p->next; } } //计算加减 p = head; while (NULL != p) { if (p->next != NULL && (p->next->value == '+' || p->next->value == '-')) { if (p->next->value == '+') { p->value = (p->value) + (p->next->next->value); } else { p->value = (p->value) - (p->next->next->value); } Node *temp = p->next; p->next = p->next->next->next; delete temp->next; delete temp; } else { p = p->next; } } int result = head->value; delete head; return result;}
- 单向链表应用
- 单向循环链表的应用
- 单向链表的应用举例
- 单向循环链表简单应用
- 单向链表及其应用(C语言)
- 约瑟夫问题(单向循环链表应用实例)
- JavaScript数据结构之单向循环链表应用-约瑟夫问题
- 单向链表
- 单向链表倒序
- 单向链表
- 单向链表逆转
- 逆转单向链表
- 单向链表反转
- 单向链表
- 单向链表(ZT)
- 反转单向链表
- 单向链表反转
- 单向链表
- widnows i/o重叠套接字编程
- 信息化成为影响石油石化行业增长首因
- ubuntu12.04 iNodeClient 连校园网
- (14)21.2.7 让步yield()方法
- Sql语句的优化
- 单向链表应用
- (15)21.2.8 后台线程
- 重构二叉树
- 编译器和链接器的工作过程
- 比较严格的JS身份证校验
- Struts2结合freemarker自定义标签
- sql优化
- 讲解delegate,notifucation,KVO三种模式实现通信的优缺点
- 创建Oracle数据库表空间