期末資料結構程式設計設計程式,演示用算符優先法對算術表

2022-09-07 08:15:22 字數 3551 閱讀 1143

1樓:匿名使用者

你這分數也太少了唄?至少的要一天才能搞定的!

2樓:大犬夜叉

這個分低了,確實。。。。

設計一個程式,演示用算符優先法對算術表示式求值的過程

《資料結構 課程設計》表示式求值 實驗報告

3樓:匿名使用者

算術表示式求值演示

一、概述

資料結構課程設計,要求學生在資料結構的邏輯特性和物理表示、資料結構的選擇和應用、演算法的設計及其實現等方面,加深對課程基本內容的理解。同時,在程式設計方法以及上機操作等基本技能和科學作風方面受到比較系統和嚴格的訓練。

在這次的課程設計中我選擇的題目是算術表示式求值演示。表示式計算是實現程式設計語言的基本問題之一,也是棧的應用的一個典型例子。設計一個程式,演示用算符優先法對算術表示式求值的過程。

深入瞭解棧和佇列的特性,以便在解決實際問題中靈活運用它們,同時加深對這種結構的理解和認識。

二、 系統分析

1. 以字元列的形式從終端輸入語法正確的、不含變數的整數表示式。利用已知的算符優先關係,實現對算術四則混合運算表示式的求值,並仿照教科書的例子在求值中運算子棧、運算數棧、輸入字元和主要操作的變化過程。

2. 一般來說,計算機解決一個具體問題時,需要經過幾個步驟:首先要從具體問題抽象出一個適當的數學模型,然後設計一個解決此數學模型的演算法,最後編出程式,進行測試,除錯直至得到想要的答案。對於算術表示式這個程式,主要利用棧,把運算的先後步驟進行分析並實現簡單的運算!

為實現算符優先演算法,可以使用兩個棧,一個用以寄存運算子,另一個用以寄存運算元和運算結果。

3. 演示程式是以使用者於計算機的對話方式執行,這需要一個模組來完成使用者與計算機語言的轉化。 4. 程式執行時的命令:

本程式為了使用具體,採用選單式的方式來完成程式的演示,幾乎不用輸入什麼特殊的命令,只需按提示輸入表示式即可。(要注意輸入時格式,否者可能會引起一些錯誤) 5.  測試資料。

2算術表示式求值演示

一、概述

資料結構課程設計,要求學生在資料結構的邏輯特性和物理表示、資料結構的選擇和應用、演算法的設計及其實現等方面,加深對課程基本內容的理解。同時,在程式設計方法以及上機操作等基本技能和科學作風方面受到比較系統和嚴格的訓練。

在這次的課程設計中我選擇的題目是算術表示式求值演示。表示式計算是實現程式設計語言的基本問題之一,也是棧的應用的一個典型例子。設計一個程式,演示用算符優先法對算術表示式求值的過程。

深入瞭解棧和佇列的特性,以便在解決實際問題中靈活運用它們,同時加深對這種結構的理解和認識。

二、 系統分析

1. 以字元列的形式從終端輸入語法正確的、不含變數的整數表示式。利用已知的算符優先關係,實現對算術四則混合運算表示式的求值,並仿照教科書的例子在求值中運算子棧、運算數棧、輸入字元和主要操作的變化過程。

2. 一般來說,計算機解決一個具體問題時,需要經過幾個步驟:首先要從具體問題抽象出一個適當的數學模型,然後設計一個解決此數學模型的演算法,最後編出程式,進行測試,除錯直至得到想要的答案。對於算術表示式這個程式,主要利用棧,把運算的先後步驟進行分析並實現簡單的運算!

為實現算符優先演算法,可以使用兩個棧,一個用以寄存運算子,另一個用以寄存運算元和運算結果。

3. 演示程式是以使用者於計算機的對話方式執行,這需要一個模組來完成使用者與計算機語言的轉化。 4. 程式執行時的命令:

本程式為了使用具體,採用選單式的方式來完成程式的演示,幾乎不用輸入什麼特殊的命令,只需按提示輸入表示式即可。(要注意輸入時格式,否者可能會引起一些錯誤) 5.  測試資料。

操作集合:

宣告棧建立函式宣告棧建立函式

確定如何入棧函式宣告入棧函式宣告入壓棧函式宣告取棧頂元素函式宣告取棧頂元素函式宣告出棧函式宣告出棧函式 (10)char compare(char m,char n);//宣告比較函式

(11)float operate(float a,char rheta,float b);//宣告運算函式從棧底到棧頂依次輸出各元素從棧底到棧頂依次輸出各元素         }adt sqstack

結構分析:

棧中的資料節點是通過陣列來儲存的。因為在c語言中陣列是用下標從零開始的,因此我

們在呼叫他們的資料是要特別注意。指標變數的值要麼為空(null),不指向任何結點;要麼其值為非空,即它的值是一個結點的儲存地址。注意,當p為空值時,則它不指向任何結點,此時不能通過p來訪問結點,否則會引起程式錯誤。

如果輸入的數字不符合題目要求,則會產生錯誤結果。

演算法的時空分析:

時間和空間效能分析:時間上,對於含n個字元的表示式,無論是對其進行合法性檢測還是對其進行入棧出棧操作n次,因此其時間複雜度為o(n)。空間上,由於是用陣列來儲存輸入的表示式,用棧來儲存運算中的資料和運算子,而棧的本質也用到的陣列,陣列在定義時必須確定其大小。

在不知表示式長度的情況下確定陣列的長度確非易事,此時極易造成空間的浪費,因此空間效能不是很好。

資料結構實驗題目請教

4樓:匿名使用者

#include"iostream.h"

#include"math.h"

#include"stdlib.h"

class calculator

bool calculator:: isoperator(char ch)

char calculator:: operate(double left,char theta,double right)

return result;

} char calculator:: precede(char theta1,char theta2)

break;

} case'*':

case'/':

case'(':

case')':

case'=': }

return ch;

} //方法run()演算法實現如下

void calculator::run()

else }

} opnd.top(operand);

cout<<"表示式值為:"<

} void main(void)

資料結構中,資料結構中,Head Head next什麼意思

頭插法 例如輸入a,b,c 下面兩塊分別表示資料域和指標域,代表null head c next b next a 實現語句 無頭結點 head null while 迴圈條件 頭插入法的輸出順序與你的輸入順序相反 尾插法 無頭結點 head a next b next c 實現 head null...

資料結構都有哪些結構,資料結構都有哪些分類呢?

常用資料結構 陣列 array 在程式設計中,為了處理方便,把具有相同型別的若干變數按有序的形式組織起來。這些按序排列的同類資料元素的集合稱為陣列。在c語言中,陣列屬於構造資料型別。一個陣列可以分解為多個陣列元素,這些陣列元素可以是基本資料型別或是構造型別。因此按陣列元素的型別不同,陣列又可分為數值...

資料結構考試題,資料結構 考試題

你要的演算法是隻要描述還是要上機可以通過的語句啊?先回答第8題吧。1 38,49,65,97,76,13,27,492 38,49,65,97,76,13,27,493 38,49,65,97,76,13,27,494 38,49,65,76,97,13,27,495 13,38,49,65,76,...