課程設計報告
課程名稱資料結構
課題名稱表示式求值
專業電腦科學與技術
班級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...