计算机的本质工作就是做数学运算,那计算机可以读入字符串"1+2+3+4+5+6+7"并计算值吗?
答案是肯定的。
这里我基本实现了个位数的加减乘除,当然这个算法最简单的解决方式是采用二叉树(后面会实现~),这里作出了栈的实现方式。
首先引入两个概念:
中缀表达式和后缀表达式
1,在生活中我们通常书写1+1的时候都会写成1+1,废话~,这就是中缀表达式,更符合人们的思维习惯与想法。
2,所谓后缀表达式就是将运算符写在操作数的后面,这样更符合计算机的思维。...
分类:
其他好文 时间:
2014-06-19 11:05:41
阅读次数:
364
各位程序猿在写代码的时候,使用的编译器(如VisualStudio、Eclipse)都有左右括号的自动匹配功能,如果写错了,它就会即时编译,提示错误。
那么现在,就利用栈的特点就简单实现了这一功能。
可以实现基本‘ { ’、‘ [ ’、‘(’、‘ “ ’、‘ ‘ ’、’ 压栈
3,遇到右符号,弹栈,弹出的左符号与右进行匹配
4,执行步骤2 ,直到遍历到'\0'(字符串结...
分类:
其他好文 时间:
2014-06-10 18:15:12
阅读次数:
242
这个例子是来自于严蔚敏的《数据结构》的栈那一节。 但是我进行了一些简单的修改,确保编译通过。
目的:利用栈 计算 “3*(7-2)”这样的字符串的算术运算的结果。 共有3个代码文件,如下:
1、mystack.h
#pragma once
#define maxsize 30
typedef struct
{
char data[maxsize+1];
...
分类:
其他好文 时间:
2014-06-05 07:35:18
阅读次数:
242
#include #include #include using namespace std;int
main(){ int n; while(cin >> n) { stack one; string od1,od2; bool stat...
分类:
其他好文 时间:
2014-05-21 23:48:58
阅读次数:
370
堆栈和队列是最基本的两个ADT,简单但是重要。先讲堆栈在计算机中的应用。堆栈:1.用于符号匹配。在编译器的语法检查中,一个过程就是检查各种括号是否匹配,比如
([]) ,这就是匹配的,而 {[}] 就不匹配了。可以用堆栈来实现括号匹配。具体算法如下:建立一个空的堆栈。 while( 文件没有结...
分类:
其他好文 时间:
2014-05-21 19:52:47
阅读次数:
348
/*
二. 栈的应用-迷宫解题
*/
#include
#include
#include
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
//坐标类型
typedef...
分类:
其他好文 时间:
2014-05-21 15:32:04
阅读次数:
353
#include #include #include using namespace
std;int main(){ int n;cin>>n; while(n--){ stack s; string
str;cin>>str; for(int ...
分类:
其他好文 时间:
2014-05-07 00:19:41
阅读次数:
356
哈哈,斯则表示的运算,非常经典的一个题目。哈哈,大家可以参考下,不过代码可能还包含错误,不过主线应该没有错误......
分类:
其他好文 时间:
2014-04-30 22:47:38
阅读次数:
232