《物件導向程式設計》課程作業 (五)

2022-06-24 14:48:15 字數 1305 閱讀 2841

github

定義

棧(stack)又名堆疊,它是一種運算受限的線性表。其限制是僅允許在表的一端進行插入和刪除運算。這一端被稱為棧頂,相對地,把另一端稱為棧底。向乙個棧插入新元素又稱作進棧、入棧或壓棧,它是把新元素放到棧頂元素的上面,使之成為新的棧頂元素;從乙個棧刪除元素又稱作出棧或退棧,它是把棧頂元素刪除掉,使其相鄰的元素成為新的棧頂元素。

特點:(fifo)先入後出,後進先出

基本演算法

1.進棧(push)演算法

①若top≥n時,則給出溢位資訊,作出錯處理(進棧前首先檢查棧是否已滿,滿則溢位;不滿則作②);

②置top=top+1(棧指標加1,指向進棧位址);

③s(top)=x,結束(x為新進棧的元素);

2.退棧(pop)演算法

①若top≤0,則給出下溢資訊,作出錯處理(退棧前先檢查是否已為空棧, 空則下溢;不空則作②);

②x=s(top),(退棧後的元素賦給x):

③top=top-1,結束(棧指標減1,指向棧頂)。

簡單**:

#include//標頭檔案

stacksta;//定義變數

sta.push(x);//x元素入棧

sta.top();//查詢隊首元素

sta.pop();//出隊

sta.size();//元素個數

sta.empty();//判斷是否為空

【c++】stl佇列和棧的使用

stl中棧和佇列的使用方法

棧的應用

括號匹配、火車進站、表示式求值等等

括號匹配可以用在四則運算的存在括號的算式的情況,因為暫時還沒運用到此次作業中,所以先貼上之前剛接觸時寫過的乙個比較簡單版本的用陣列實現的判斷括號匹配

#include char s[100001];

int main()

if (str==')') //右括號出棧

j=j-1;

} if (j==0)

printf("yes");

else

printf("no");

return 0;

}

此次作業的感想

開始編碼的時候才發現其實上次作業中建的類還是有許多需要完善的部分。另外發現原來那些令人頭疼的全域性變數也慢慢被改掉了。看起來也舒服多了。

現在正在一步步地把寒假寫的亂七八糟的**改成有可讀性和可維護性的**,本來這次除了建類外還想做個改進把算式部分用棧來實現,但是考慮到時間來不及暫且處理到生成算式部分,接下來的算式運算就是核心部分了,是個需要耐心研究的部分。

2017《物件導向程式設計》課程作業五

搭建主體框架 github 又經過乙個禮拜關於類的學習,對類有知道的又多一點啦 加上老師對於上次作業的提示,我對於計算器有了新的劃分 一共兩個類,乙個是使用者類,乙個是算式類。使用者類的資料成員包括使用者語言 使用者題量 使用者答案 函式成員包括選擇語言 從指定檔案讀取題量 輸入答案 算式類的資料成...

《物件導向程式設計》課程作業八

emmm.轉眼又到學期末了。從寒假到這次結束,經歷的部落格及編碼作業的過程 時間過得好快啊,過年的時候在家裡用草稿紙上寫著函式原型和功能分塊,和朋友討論具體實現的細節 感覺寒假就在昨天一樣。部落格的話,不僅僅寫了這次作業,還積累了很多別的東西,這份收穫是可喜的。這次編碼是把所學知識做了一次真實的應用...

《物件導向程式設計》課程作業七

題目描述 請將隨機生成數字 表示式的部分設計成 乙個random基類,基類中有random 方法。並由該基類派生出randomnumber類 randomoperation類,繼承並覆蓋父類方法。學習簡單工廠模式,思考能否將該模式運用到題目的第一點要求中。include includeusing n...