日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

c语言数据结构课程设计算术表达式求值,《数据结构 课程设计》表达式求值 实验报告...

發(fā)布時(shí)間:2023/12/9 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言数据结构课程设计算术表达式求值,《数据结构 课程设计》表达式求值 实验报告... 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

匿名用戶

1級(jí)

2016-09-22 回答

算術(shù)表達(dá)式求值演示

一、概述

數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì),要求學(xué)生在數(shù)據(jù)結(jié)構(gòu)的邏輯特性和物理表示、數(shù)據(jù)結(jié)構(gòu)的選擇和應(yīng)用、算法的設(shè)計(jì)及其實(shí)現(xiàn)等方面,加深對(duì)課程基本內(nèi)容的理解。同時(shí),在程序設(shè)計(jì)方法以及上機(jī)操作等基本技能和科學(xué)作風(fēng)方面受到比較系統(tǒng)和嚴(yán)格的訓(xùn)練。

在這次的課程設(shè)計(jì)中我選擇的題目是算術(shù)表達(dá)式求值演示。表達(dá)式計(jì)算是實(shí)現(xiàn)程序設(shè)計(jì)語言的基本問題之一,也是棧的應(yīng)用的一個(gè)典型例子。設(shè)計(jì)一個(gè)程序,演示用算符優(yōu)先法對(duì)算術(shù)表達(dá)式求值的過程。深入了解棧和隊(duì)列的特性,以便在解決實(shí)際問題中靈活運(yùn)用它們,同時(shí)加深對(duì)這種結(jié)構(gòu)的理解和認(rèn)識(shí)。

二、 系統(tǒng)分析

1. 以字符列的形式從終端輸入語法正確的、不含變量的整數(shù)表達(dá)式。利用已知的算符優(yōu)先關(guān)系,實(shí)現(xiàn)對(duì)算術(shù)四則混合運(yùn)算表達(dá)式的求值,并仿照教科書的例子在求值中運(yùn)算符棧、運(yùn)算數(shù)棧、輸入字符和主要操作的變化過程。

2. 一般來說,計(jì)算機(jī)解決一個(gè)具體問題時(shí),需要經(jīng)過幾個(gè)步驟:首先要從具體問題抽象出一個(gè)適當(dāng)?shù)臄?shù)學(xué)模型,然后設(shè)計(jì)一個(gè)解決此數(shù)學(xué)模型的算法,最后編出程序,進(jìn)行測試,調(diào)試直至得到想要的答案。對(duì)于算術(shù)表達(dá)式這個(gè)程序,主要利用棧,把運(yùn)算的先后步驟進(jìn)行分析并實(shí)現(xiàn)簡單的運(yùn)算!為實(shí)現(xiàn)算符優(yōu)先算法,可以使用兩個(gè)棧,一個(gè)用以寄存運(yùn)算符,另一個(gè)用以寄存操作數(shù)和運(yùn)算結(jié)果。

3. 演示程序是以用戶于計(jì)算機(jī)的對(duì)話方式執(zhí)行,這需要一個(gè)模塊來完成使用者與計(jì)算機(jī)語言的轉(zhuǎn)化。 4. 程序執(zhí)行時(shí)的命令:

本程序?yàn)榱耸褂镁唧w,采用菜單式的方式來完成程序的演示,幾乎不用輸入什么特殊的命令,只需按提示輸入表達(dá)式即可。(要注意輸入時(shí)格式,否者可能會(huì)引起一些錯(cuò)誤) 5. 測試數(shù)據(jù)。

2

算術(shù)表達(dá)式求值演示

一、概述

數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì),要求學(xué)生在數(shù)據(jù)結(jié)構(gòu)的邏輯特性和物理表示、數(shù)據(jù)結(jié)構(gòu)的選擇和應(yīng)用、算法的設(shè)計(jì)及其實(shí)現(xiàn)等方面,加深對(duì)課程基本內(nèi)容的理解。同時(shí),在程序設(shè)計(jì)方法以及上機(jī)操作等基本技能和科學(xué)作風(fēng)方面受到比較系統(tǒng)和嚴(yán)格的訓(xùn)練。

在這次的課程設(shè)計(jì)中我選擇的題目是算術(shù)表達(dá)式求值演示。表達(dá)式計(jì)算是實(shí)現(xiàn)程序設(shè)計(jì)語言的基本問題之一,也是棧的應(yīng)用的一個(gè)典型例子。設(shè)計(jì)一個(gè)程序,演示用算符優(yōu)先法對(duì)算術(shù)表達(dá)式求值的過程。深入了解棧和隊(duì)列的特性,以便在解決實(shí)際問題中靈活運(yùn)用它們,同時(shí)加深對(duì)這種結(jié)構(gòu)的理解和認(rèn)識(shí)。

二、 系統(tǒng)分析

1. 以字符列的形式從終端輸入語法正確的、不含變量的整數(shù)表達(dá)式。利用已知的算符優(yōu)先關(guān)系,實(shí)現(xiàn)對(duì)算術(shù)四則混合運(yùn)算表達(dá)式的求值,并仿照教科書的例子在求值中運(yùn)算符棧、運(yùn)算數(shù)棧、輸入字符和主要操作的變化過程。

2. 一般來說,計(jì)算機(jī)解決一個(gè)具體問題時(shí),需要經(jīng)過幾個(gè)步驟:首先要從具體問題抽象出一個(gè)適當(dāng)?shù)臄?shù)學(xué)模型,然后設(shè)計(jì)一個(gè)解決此數(shù)學(xué)模型的算法,最后編出程序,進(jìn)行測試,調(diào)試直至得到想要的答案。對(duì)于算術(shù)表達(dá)式這個(gè)程序,主要利用棧,把運(yùn)算的先后步驟進(jìn)行分析并實(shí)現(xiàn)簡單的運(yùn)算!為實(shí)現(xiàn)算符優(yōu)先算法,可以使用兩個(gè)棧,一個(gè)用以寄存運(yùn)算符,另一個(gè)用以寄存操作數(shù)和運(yùn)算結(jié)果。

3. 演示程序是以用戶于計(jì)算機(jī)的對(duì)話方式執(zhí)行,這需要一個(gè)模塊來完成使用者與計(jì)算機(jī)語言的轉(zhuǎn)化。 4. 程序執(zhí)行時(shí)的命令:

本程序?yàn)榱耸褂镁唧w,采用菜單式的方式來完成程序的演示,幾乎不用輸入什么特殊的命令,只需按提示輸入表達(dá)式即可。(要注意輸入時(shí)格式,否者可能會(huì)引起一些錯(cuò)誤) 5. 測試數(shù)據(jù)。

操作集合:

(1)void InitStack1(SqStack1 &S1);//聲明棧建立函數(shù) (2)void InitStack2(SqStack2 &S2);//聲明棧建立函數(shù)

(3)void evaluate(SqStack1 &S1,SqStack2 &S2);//確定如何入棧函數(shù) (4)void Push1(SqStack1 &S1,char e);//聲明入棧函數(shù) (5)void Push2(SqStack2 &S2,float e);//聲明入壓棧函數(shù) (6)char GetTop1(SqStack1 &S1);//聲明取棧頂元素函數(shù) (7)float GetTop2(SqStack2 &S2);//聲明取棧頂元素函數(shù) (8)char Pop1(SqStack1 &S1);//聲明出棧函數(shù) (9)float Pop2(SqStack2 &S2);//聲明出棧函數(shù) (10)char Compare(char m,char n);//聲明比較函數(shù)

(11)float Operate(float a,char rheta,float b);//聲明運(yùn)算函數(shù) (12)void DispStack1(SqStack1 &S1);//從棧底到棧頂依次輸出各元素 (13)void DispStack2(SqStack2 &S2);//從棧底到棧頂依次輸出各元素 }ADT SqStack

結(jié)構(gòu)分析:

棧中的數(shù)據(jù)節(jié)點(diǎn)是通過數(shù)組來存儲(chǔ)的。因?yàn)樵贑語言中數(shù)組是用下標(biāo)從零開始的,因此我

們在調(diào)用他們的數(shù)據(jù)是要特別注意。指針變量的值要么為空(NULL),不指向任何結(jié)點(diǎn);要么其值為非空,即它的值是一個(gè)結(jié)點(diǎn)的存儲(chǔ)地址。注意,當(dāng)P為空值時(shí),則它不指向任何結(jié)點(diǎn),此時(shí)不能通過P來訪問結(jié)點(diǎn),否則會(huì)引起程序錯(cuò)誤。如果輸入的數(shù)字不符合題目要求,則會(huì)產(chǎn)生錯(cuò)誤結(jié)果。

算法的時(shí)空分析:

時(shí)間和空間性能分析:時(shí)間上,對(duì)于含n個(gè)字符的表達(dá)式,無論是對(duì)其進(jìn)行合法性檢測還是對(duì)其進(jìn)行入棧出棧操作n次,因此其時(shí)間復(fù)雜度為O(n)。空間上,由于是用數(shù)組來存儲(chǔ)輸入的表達(dá)式,用棧來存儲(chǔ)運(yùn)算中的數(shù)據(jù)和運(yùn)算符,而棧的本質(zhì)也用到的數(shù)組,數(shù)組在定義時(shí)必須確定其大小。在不知表達(dá)式長度的情況下確定數(shù)組的長度確非易事,此時(shí)極易造成空間的浪費(fèi),因此空間性能不是很好。

總結(jié)

以上是生活随笔為你收集整理的c语言数据结构课程设计算术表达式求值,《数据结构 课程设计》表达式求值 实验报告...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。