表示式求值

2023-01-10 00:45:02 字數 3090 閱讀 4387

課程設計報告

課程名稱資料結構

課題名稱表示式求值

專業電腦科學與技術

班級0901

學號 200903010102

姓名覃宇星

指導教師李珍輝鄧作傑郭芳

2023年7月7日

湖南工程學院

課程設計任務書

課程名稱 c語言程式設計

課題表示式求值

專業班級計算機0901

學生姓名

學號指導老師周鐵山

審批任務書下達日期 2023年 6月 23 日

任務完成日期 2023年 7月 7日

《資料結構課程設計》

一、 課程設計的性質和目的

資料結構課程設計是計算機專業的專業課程,通過課程設計使學生進一步鞏固課堂所學知識,全面熟悉、掌握資料結構的基本設計方法和技巧,進一步提高分析問題、解決問題及上機操作能力,為將來從事計算機工作打下一定的專業基礎。

二、 設計課題

課題一:迷宮問題

詳細內容見後

課題二:馬踏遍棋盤問題

詳細內容見後

課題三:表示式求值問題

詳細內容見後

課題四:b+樹的實現

詳細內容見後

三、 課程設計報告要求

課程設計報告每人乙份,必須包含如下幾個方面的內容:

1.基本設計思想;2.主要資料結構;3.主要實施流程;4.所有源**;

5.課程設計總結與體會。

四、 分組及選題辦法

1、 一人一組。

2、 若選擇課題四,則只需完成一題即可;否則,必須至少完成前三個課題中的任意兩個。

3、 成績考核按個人課題完成情況、設計報告質量及對課程設計的態度等綜合評定。

五、設計進度安排

1、 講課及上機除錯時間安排:

各班具體時間另行安排

2、 其餘時間:查閱資料,確定方案,設計課題相關程式。

3、 分組答辯,交課程設計報告。

設計課題三:表示式求值問題

一、問題提出

在高階語言程式**現的數學表示式要進行求值運算,本課程設計要求模擬編譯程式的求值過程,利用棧這種資料結構,對包含四則算術運算及多重括號及常量的表示式進行求值運算。

二、設計要求

1.一次性輸入乙個表示式,包含數值常量、四則算術運算子、括號等。

2.能輸出表示式的正確結果。

1. 輸入輸出介面清晰明了。

三、設計提示

1.可用兩個棧(運算元棧和運算子棧)來儲存運算過程中的原始資料及中間結果。

2.運算過程中要將輸入的數字型字元轉化為數值。

3. 可以利用乙個函式返回運算子之間的優先關係;也可將乙個運算子放入乙個一維陣列,並根據運算子在該陣列中的位置建立乙個二維陣列,存放運算子之間的優先關係。

目錄一. 流程圖vi

二. 基本設計思想vii

三.主要資料結構vii

四.主要實施流程vii

五.執行結果舉例vii

六.源**ix

七.課程設計總結與體會xvi

八.評分表xvii

一 . 流程圖

二.基本設計思想:

1.可用兩個棧(運算元棧和運算子棧)來儲存運算過程中的原始資料及中間結果。

2.運算過程中要將輸入的數字型字元轉化為數值。

3. 可以利用乙個函式返回運算子之間的優先關係;也可將乙個運算子放入乙個一維陣列,並根據運算子在該陣列中的位置建立乙個二維陣列,存放運算子之間的優先關係。

三.主要資料結構:

shuzi zifu 兩個棧;

四.主要實施流程:

一次性輸入乙個表示式,包含數值常量、四則算術運算子、括號,中括號大括號等。

通過push(分別把數字和字元入站) gettop(分別取數字和字元兩個棧頂元素) top(分別讀數字和字元兩個棧頂元素) in(判斷是否為數字還是字元) compare(比較運算子的優先順序) jisuan(四則運算) expevaluation(對表示式進行總體運算)等函式進行計算並得出結果

五.執行結果舉例

進入主選單,選1

輸入表示式,並計算結果顯示出來(帶中括號)

輸入表示式,並計算結果顯示出來(帶大括號)

輸入2 程式結束

六. 源**:

/*標頭檔案

#include ""

#define m 100

typedef struct

shuzi;

int push1(shuzi *p, int x)

int gettop1(shuzi *p, int *x)

}int top1(shuzi *p, int *x) //將棧s的棧頂元素彈出,放到x所指的儲存空間中,但棧頂指標保持不變

}typedef struct

zifu;

char push2(zifu *s, char x)

char gettop2(zifu *s, char *x) /* 將棧s的棧頂元素彈出,放到x所指的儲存空間中 */

}int top2(zifu *s, char *x) //將棧s的棧頂元素彈出,放到x所指的儲存空間中,但棧頂指標保持不變

}int in(char ch)

') return 1;

else if(ch=='#')

return 1;

else return 0;}

char compare(char x,char ch)

'||ch=='#')

return '>';

else if(ch=='*'||ch=='/'||ch=='('||ch=='')

return '>';

else if(ch=='*'||ch=='/'||ch=='('||ch=='['||ch=='')

return '0';

break;

case ')':

if(ch=='+'||ch=='-'||ch=='*'||ch=='/'||ch==')'||ch=='#'||ch==']'||ch=='}')

return '>';

else if(ch=='('||ch=='['||ch=='{')

return '0';

break;

表示式求值演算法比較

年 月電腦學習第 期 司慶福 程書偉摘要 論述了表示式求值相關暮法的實現過程及分析。關鍵詞 表示式求值計算機敦值適算中圖分類號 文獻標識碼 文章編號 表示式求值介紹 示。目前常用的表示式種類主要包括中綴表示式與字尾表中綴表示 字尾表示 達式兩種。中綴表示式即平常使用的數學表示式,如 一 特點是符合人...

實驗四算術表示式求值

源 include include include define plus 0 define minus 1 define power 2 define divide 3 define leftp 4 define righp 5 define startend 6 define digit 7 d...

算術表示式求值課設報告

資料結構課程設計 設計說明書 數學與電腦科學學院 2012年 9月 7日 資料結構課程設計評閱書 注 指導教師成績60 答辯成績40 總成績合成後按五級制記入 課程設計任務書 2011 2012學年第2學期 專業學號姓名 課程設計名稱資料結構課程設計 設計題目表示式求值演算法的實現 完成期限 自 2...