数据结构课程设计报告_ip数据包捕获与分析

数据结构课程设计报告_ip数据包捕获与分析

ID:41673946

大小:307.75 KB

页数:22页

时间:2019-08-29

数据结构课程设计报告_ip数据包捕获与分析_第1页
数据结构课程设计报告_ip数据包捕获与分析_第2页
数据结构课程设计报告_ip数据包捕获与分析_第3页
数据结构课程设计报告_ip数据包捕获与分析_第4页
数据结构课程设计报告_ip数据包捕获与分析_第5页
资源描述:

《数据结构课程设计报告_ip数据包捕获与分析》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、中南大学数据结构课程设计报告题目数据结构课程设计学生姓名廖成指导教师畅金学院信息科学与工程学院专业班级计算机科学与技术1304班二O—五年九月目录1.需求分析31.1问题描述31.2基本要求32.总体设计32.1数据结构32.2模块间调用关系32.3各模块设计42.3.1判读运算符优先级模块42.3.2表达式转换模块42.3.3表达式求值模块63.详细设计74.调试与测试95.测试结果106.课程设计心得体会12参考文献13附录131.需求分析1.1问题描述表达式求值是实现程序设计语言的基本问题么一,也是栈的应用的一个典型,设计程序演示

2、用算符优先法对算术表达式求值的过程。1.2基本要求(1)以字符序列的形式从终端上输入语法正确的、不含变量的表达式。实现对算术四则运算表达式,对任意算术表达式的加法、减法、除法以及乘法求值。(2)运算数包括整数和小数处理。(3)演示在求值中运算符栈、运算数栈、输入字符和主要操作的变化过程。(4)计算器的功能仿真。2.总体设计2.1数据结构使用两个数组si,s2分别保存输入的中缀表达式和转换后的后缀表达式。通过使用char类型栈和double类型栈分别对运算符和操作数执行相应的操作,该栈由VC编译器支持,声明如下:stacksc

3、;//声明栈sc,对运算符操作stacksf;//声明栈sf,对操作数操作2・2模块间调用关系2.3各模块设计2.3.1判读运算符优先级模块该模块的功能是判断各种运算符的优先级别,参数是字符型变量op,返回类型为整型,优先级越高的运算符返回的整型数据越大。2.3.2表达式转换模块特殊字符'#'压人字符栈SC,用以判断是否结束表达式的转换。逐个取出数组S1中的元素,如果是空格字符则不作任何处理;如果是'('则入栈SC;如果是')'则依次将栈顶元素放入数组S2并出栈,直到栈顶元素为'(’,再执行一次出栈;如果是运算符则判断其

4、与当前栈顶元素优先级高低,如果较低则将栈顶元素写入数组s2中,直到优先级较高然后将其入栈;如果是数字或者小数点,则直接写入到数组s2末尾,直到遇到字符串结束符''。将栈sc中剩余元素写入数组s2末尾并出栈,直到特殊字符结束表达式的转换。经过以上步骤,保存在si中的中缀表达式转换成后缀表达式并保存在s2数组中,可以用后缀表达式求值模块计算原表达式的值。2.3.3表达式求值模块定义双精度类型变量保存操作数的整数和小数部分,逐个字符扫描s2中的后缀表达式,如果是空格则不执行任何操作;如果是运算符则从栈sf中取出操作数并执行相应的运算并把运

5、算结果压入操作数栈sf;如果是数字或者小数点则通过相应的方法计算出操作数并压入操作数栈sf屮直到遇到字符串结束符,此刻操作数栈中应该只有一个元素,此元素即为表达式的值。2.详细设计charD_sc_pop();//返冋栈顶元素(运算符)并执行一次出栈操作由于在实现表达式求值时要执行多次取栈顶元素并出栈操作,在每次出栈之前都需要检验栈当前是否为空,而且収栈顶和出栈操作也要分步实现,这样会产牛很多冗余代码,本函数把这些操作封装在一个函数中,调用该函数即可实现从运算符栈出栈并返回栈顶元素,使代码看起来更简洁,紧凑。具体实现细节如下:charD

6、_sc_pop(){ifdsc.empty())//执行出栈操作前判断栈是否为空{a二sc.top();//取栈顶元素,并保存在变量a中cout«/z出栈运算符:〃《a«endl;sc.pop();//对运算符栈执行一次出栈操作}else{cout«/zerror:Stackisempty!/z«endl;exit(O);//如果栈为空,提示错误并退出程序}returna;//返回栈顶元素doubleD_sf_pop();//返回栈顶元素(操作数)并执行一次出栈操作该函数跟charD_scpop()函数类似,调用该函数即可从操作数栈屮出

7、栈一个元素并将该元素返回,具体实现细节如下:doubleD_sf_pop()b=sf.top();//取栈顶元素,并保存在变量b中cout«tB栈操作数:z/«b«endl:sf.pop();//对操作数执行一次出栈操作}else{cout«z,error:Stackisempty!z,«endl;exit(O);//如果栈为空,提示错误并退出程序}returnb;//返冋栈顶元素}intD_pre(charop);//判断运算符的优先级,优先级越高的返回值越大要求表达式的值就必须能对表达式中各种运算符做优先级判断,根据不同的优先级做不

8、同的处理。该函数对传入的参数做优先级的判断,根据优先级的不同,返回的int型数值也不同,运算符的优先级越高,返冋的数值越大。具体实现细节如下:intD_pre(charop){switch(op){case

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。