中南大學資料結構課程設計報告

2021-04-11 15:50:33 字數 2588 閱讀 3864

資訊科學與工程學院

課程設計報告書

課程名稱資料結構

設計題目算術表示式求值

專業班級電子資訊工程1002

學號0909101123

姓名楊家駿

指導教師李登

2023年 7月

目錄● 問題描述

● 基本要求

● 資料結構的設計

● 軟體模組結構圖

● 程式設計思想

● 程式流程圖

● 源程式

● 除錯分析

● 測試資料

● 使用者使用手冊

● 心得體會

一:問題描述

從鍵盤上輸入算術表示式,包括括號,(1)判斷表示式是否是正常表示式;(2)計算出一般表示式(類似如a*b+c/d-e)的值,(3)並能實現一元多項式相加。

二:基本要求

(1)程式對所輸入的友達式作簡單的判斷,如表示式有錯,能給出適當的提示

(2)能處理單目運算子:十和一。

(3)已知和,並且在a(x)和b(x)中指數相差很多,求a(x)=a(x)+b(x)。要求設計儲存結構表示一元多項式,設計演算法實現一元多項式相加。

三:資料結構的分析

根據本課程設計題目要求,可總體分為三個大的模組。分別是判斷表示式正確與否(模組1)、表示式求值設計(模組2)、實現一元多項式相加(模組3)。所以下面分別對三個大模組進行大概的各類分析。

需求分析

模組1:能夠處理以字串行的形式輸入的不含變數的實數表示式,能夠正確處理負數與小數,能夠判斷表示式是否語法正確(即不能出現兩符號連續出現的情況,包括分母不為零的情況)。

模組2:能正確實現對算術四則混合運算表示式的求值。以字串的形式輸入表示式,以「#」結束;在計算的最終的答案將顯示在螢幕上;能夠將計算中遇到的問題和結果以檔案的形式予以儲存。

模組3:能夠實現一元多項式相加,並予以儲存。

②概要設計

模組1:資料結構型別:

#define stack_init_sizt 100;

#define stackincrement 10

typedef struct

sqstack;

模組2:資料結構型別

typedef struct

seqstack;

seqstack *optr, *opnd;

模組3:資料結構型別:

typedef int elemtype;

typedef struct clnode

clnode, *clinklist

③詳細設計

模組1:void main()

else}}

printf(「結果是%f\n」,gettop_n(&opnd));

}else printf(「輸入錯誤!\n」);

}模組2:void main()

else

switch(precede(gettop(optr),w))//否則,比較optr堆疊中棧頂的算符與getchar()函式讀入的算符的優先順序

case -1://棧外算符優先順序高,繼續入棧

is_err=push(optr,w);//入棧操作

w=getchar();//迴圈

break;

case 0://???

is_err=pop(optr,&temp);

w=getchar();

break;

case 1://棧內算符優先順序高

is_err=pop(opnd,&b);//將棧頂的元素賦予後乙個變數

is_err=pop(opnd,&a);

is_err=pop(optr,&op);

is_err=push(opnd,execute(a,op,b));

break;

}printf("-----結果為:%d\n",gettop(opnd));

} 模組3:void addpoly(polynode *pa, polynode *pb) //兩個多項式相加

else if(p->exp==q->exp) //指數相等時,係數相加

else //係數相加為0

p=r->next;

temp=q;

q=q->next;

}else //q指向項指數小於p時,將q加入多項式中

}if(q)

r->next=q;

free(pb);

}void print(polynode * p) //列印多項式

printf("一共有%d項\n",i);

} void main() //主函式

④除錯分析

模組1:未實現功能

模組2:

模組3:

四:軟體模組結構圖

模組1、2:

模組3:

五:程式設計思想

模組1:看到程式要求,頭腦裡就有一定的邏輯思路和關係:先判斷括號是否對稱,然後再考慮是否有符號連續的情況。最後看是否運算數字比符號位多1。

模組2:算術表示式中有加減乘除,以及乘方和括號等運算關係和法則,又考慮到有運算先後的關係。故需採用不同的儲存結構來儲存,所以要用到optr和opnd兩個棧,分別用來儲存運算符合運算數,並且規定『#』是最低運算級,所以需用『#』表示表示式結束。

資料結構課程設計報告

交通諮詢系統設計 不用輸入程式語句,也不用那個截圖 不用太著急,報告周五之前給我就行了 列印和壓縮包都要哈!對了,這段文字記得刪掉啊嘿嘿 題目名稱交通諮詢系統設計 院 系 管理學院 課程名稱資料結構課程設計 班級資訊 10 2 學生姓名呂德麗 指導教師李長雲 目錄一 需求分析及選題要求 3 1 問題...

資料結構課程設計報告

課程設計報告 課程名稱資料結構 課題名稱生死者遊戲 專業資訊管理與資訊系統 班級學號 姓名指導教師 2011 年 1 月 20 日 湖南工程學院 課程設計任務書 課程名稱資料結構 課題生死者遊戲 專業班級 學生姓名 學號指導老師 審批任務書下達日期 2011 年 1 月 3 日 任務完成日期 201...

《資料結構》課程設計報告

1.1 要求 1.2 題目分析 1.3相關 1.4執行結果 1.5總結 2.1 要求 2.2 題目分析 2.3相關 2.4執行結果 2.5總結 3.1 要求 3.2 題目分析 3.3相關 3.4執行結果 3.5總結 4.1 要求 4.2 題目分析 4.3相關 4.4執行結果 4.5總結 1 可以錄入...