2017/04/05学习笔记

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2017/04/05学习笔记相关的知识,希望对你有一定的参考价值。

栈的应用

案例1:就近匹配
几乎所有的编译器都具有检测括号是否匹配的能力
如何实现编译器中的符号成对检测?
#include <stdio.h> int main(){int a[4][4];int (*p)[4];p =a[0];return ;
算法思路
从第一个字符开始扫描
当遇见普通字符时忽略
当遇见左符号时压入栈中
当遇见右符号时从栈中弹出栈顶符号,并进行匹配
匹配成功:继续读入下一个字符
匹配失败:立即停止,并报错
结束:
成功:所以字符扫描完毕,且栈为空
失败:匹配失败或所有字符扫描完毕但栈非空
当需要继承成对出现但右不相互相邻的事物时
可以使用栈的 先进后出的特性
栈非常适合需要接近匹配的场合

案例2:中缀 后缀
计算机的本质工作就是做数学运算,那计算机可以读入字符串
“9+(3-1)5+8/2"并计算么?
后缀表达式 ==?符号计算机运算
波兰科学家在20世纪50年底提出了一种将运算符放在数字后面的后缀表达式对应的。
我们习惯的数学表达式叫做中缀表达式 ==>符合人类的思维习惯
实例:
5+4 ==> 5 4 +
1+2
3 ==>1 2 3 * +
8+(3-1)5 =>8 3 1 -5 +
中缀表达式符号人类的阅读和思维习惯
后缀表达式符号计算机的运算习惯
如何将中缀表达式转换成后缀表达式?
中缀转后缀算法
遍历中缀表达式中的数值和符号
对于数字直接输出
对于符号: 左括号压栈
运算符号:与栈顶符号进行优先级比较
若栈顶符号优先级低:此符号压栈(默认栈顶是左括号,左括号优先级最低)
若栈顶符号优先级不低:将栈顶符号弹出并输出,之后压栈
右括号:将栈顶符号弹出并输出,直到匹配左括号
遍历结束:将栈中的所有符号弹出并输出
中缀转后缀

以上是关于2017/04/05学习笔记的主要内容,如果未能解决你的问题,请参考以下文章

(转)Akka学习笔记

JavaWeb学习笔记总结 目录篇

系列文章--Node.js学习笔记系列

Windows编程课程学习笔记

Windows编程课程学习笔记

2022年Spark基础学习笔记