长沙理工大学数据结构栈的实现及应用算术表达式求值实验报告

批 阅 实 验 报 告

年级 班号 学号 姓名

实验名称: 栈的实现及其应用:算术表达式的计算

实验日期 2016年12月 2日

实验报告撰写内容 一、实验环境 二、实验目的 三、实验内容

四、数据结构与算法思想描述 五、程序清单 六、程序执行结果及其分析 计算机科学与技术系

2016年制

一、 实验环境

32位操作系统下的Window平台 Microsoft Visual C++

二、 实验目的

掌握栈的实现及使用

三、 实验内容

1.实现栈的存储结构

2.实现栈的基本操作的有关算法 3.利用栈解决*算术表达式求值问题

四、 数据结构与算法思想描述

顺序读取中缀表达式:

1、 当遇到数字时,将数字入数字栈

2、 当遇到操作符时,与操作符栈栈顶比较:

If(当前操作符优先级大于操作符栈栈顶的优先级) If(非”)”操作符)

将当前操作符进操作符栈; Else

While(操作符栈栈顶不等于”(“)

取操作符栈栈顶及数字栈的两个数进行运算,并将结果压入数字栈; Else If(非(“操作符)

While(操作符栈栈顶不等于”(“)

取操作符栈栈顶及数字栈的两个数进行运算,并将结果压入数字栈; Continue;(直到当前操作符比栈顶操作符优先级大)

Else 将当前操作符进操作符栈; 3、 While(操作符栈非空)

操作符栈栈顶及数字栈的两个数进行运算,并将结果压入数字栈;

4、 在数字栈取最后结果并输出。

五、 程序清单

//10*8^2+16.3+5*(5.2*5+3.01)/4-(-10)+0.1000060+4.00416-40 = 666.666666 //100+(-100)-(-10^2) = 100

//(((2016-2017+(((2015-2014)))))) = 0 //-1+(((((((((1^0))))))))+100^2 = 0 #include #include #include #include #include #include using namespace std; const int MAX = 105;

typedef double Type; typedef struct {

Type TypeStack[MAX]; char charStack[MAX];

int TypeTop, charTop;

}Stack;

//初始化栈

void InitStack(Stack *S) { }

//判断charStack是否为空 bool IsEmpty_Char(Stack S) { }

//判断TypeStack是否为空 bool IsEmpty_Type(Stack S) { }

//判断charStack是否为满 bool IsFull_Char(Stack S) { }

return S.charTop == MAX; return S.TypeTop == 0; return S.charTop == 0; S->charTop = S->TypeTo

>>闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳婀遍埀顒傛嚀鐎氼參宕崇壕瀣ㄤ汗闁圭儤鍨归崐鐐差渻閵堝棗绗掓い锔垮嵆瀵煡顢旈崼鐔蜂画濠电姴锕ら崯鎵不缂佹﹩娈介柣鎰綑閻忔潙鈹戦鐟颁壕闂備線娼ч悧鍡涘箠閹伴偊鏁婂┑鐘插€甸弨浠嬪箳閹惰棄纾归柟鐗堟緲绾惧鏌熼幆褍顣虫俊顐灦閺岀喖顢涢崱妤冪伇闁告艾顑夊娲传閸曨厾鍔圭紓鍌氱С缁舵岸鎮伴鈧畷鍫曨敆婢跺娅栭梻浣瑰缁诲倸螞瀹€鍕闁告侗鍠氱弧鈧梺姹囧灲濞佳勭濠婂嫪绻嗘い鏍ㄧ啲閺€鑽ょ磼閸屾氨孝妤楊亙鍗冲畷鐓庘攽閸偅袨闂傚倷绶氶埀顒傚仜閼活垱鏅堕濮愪簻妞ゅ繐瀚弳锝呪攽閳ュ磭鍩g€规洖宕灃闁逞屽墲閵嗘牜绱撻崒姘偓鎼佸磹閸濄儳鐭撻柡澶嬪殾濞戞鏃堝焵椤掑嫭鍋濆┑鐘宠壘闁裤倖淇婇妶鍕槮濞存粍绮撳铏圭矙鐠恒劎顔囬梺姹囧妿閸忔﹢鐛箛娑欐優闁革富鍘鹃敍婊呯磽閸屾瑩妾烽柛銊ョ秺閻涱噣寮介鐔哄幍闂佸憡鍔樼亸娆戠不濞差亝鐓忛柛銉e妼婵本銇勯敃鈧顓犳閹烘挻缍囬柕濞垮劜鐠囩偤姊虹拠鈥虫灀闁哄懐濮撮悾宄邦潨閳ь剟骞婇悩娲绘晞闁圭ǹ楠告禍婵堢磽閸屾艾鈧悂宕愭搴㈩偨闁跨喓濮寸粣妤呮煛瀹ュ骸骞楅柛瀣儔閺岀喖骞嗚閿涘秹鏌¢崱顓犵暤闁哄瞼鍠栭幃婊冾潨閸℃ḿ鏆﹂梻浣呵归敃锕傚礂濮椻偓楠炲啫螖閸涱喖浠洪梺璋庡棭鍤欐繝鈧柆宥呮瀬妞ゆ洍鍋撴鐐叉椤︻噣鏌¢埀顒佺鐎n偆鍘藉┑鈽嗗灥濞咃絾绂掑☉銏$厸闁糕€崇箲濞呭懘鏌嶇憴鍕伌妞ゃ垺鐟ч崰濠囧础閻愭惌鍟€闂傚倷鑳堕幊鎾剁不瀹ュ鍨傜痪顓炴噽娴滆棄鈹戦悙瀛樺鞍闁告垵缍婂畷褰掑箮閽樺鍔﹀銈嗗笒閸燁偊鎮¢幇鐗堢厪闁搞儜鍐句純閻庢鍠楀ḿ娆掔亙闂侀€炲苯澧紒鍌氱У閵堬綁宕橀埞鐐闂備礁鎲$换鍌溾偓姘煎櫍閹偟鎹勯妸褏锛滈梺鍝勮閸庢娊鎮鹃悜姗嗘闁绘劕寮堕ˉ銏⑩偓娈垮櫘閸o絽鐣锋總鍓叉晝闁挎繂妫欓悵顐⑩攽閻樺灚鏆╅柛瀣仱瀹曞綊宕奸弴鐔告珖闂佸啿鎼崐鎼侇敋闁秵鐓ラ柣鏇炲€圭€氾拷<<
12@gma联系客服:779662525#qq.com(#替换为@)