DS部落格作業03 棧和佇列

2022-05-19 22:26:26 字數 1932 閱讀 8988

本題要求在乙個陣列中實現兩個堆疊。

q1:剛開始的時候題意不是很理解題意,不清楚兩個堆疊到底怎麼分配

a1:後來細想堆疊的特點就是堆疊陣列有兩個方向,但只需要乙個插入點,故理解一邊乙個堆疊的設計方法。

q2:答案錯誤的原因是,在先移動指標還是先修改資料的順序選擇上需要進行仔細思考

a2:自加和自減能更簡便地表達出指標和資料的改動,方便處理返回資料時先返回後移指標的這種情況。

假設在週末舞會上,男士和女士們分別進入舞廳,各自排成一隊。跳舞開始,依次從男隊和女隊隊頭各出一人配成舞伴,若兩隊初始人數不同,則較長那一隊未配對者等待下一輪舞曲。現要求寫一演算法模擬上述舞伴配對問題。 你需要用佇列操作實現上述演算法。請完成下面5個函式的操作。

q1:前四個函式為簡單的佇列操作,故可以用一條語句完成

a1:在函式返回資料時採用返回算式的寫法,可增加**的簡潔性,編譯錯誤就是出現在整理**的時候。

q2:同時處理兩個佇列配對問題時,需要設定好配對結束的終止條件

a2:分步處理兩種不同結果,當任一隊列為空時結束配對迴圈,並將非空的佇列資料返回。

請編寫程式檢查c語言源程式中下列符號是否配對:/與/、(與)、[與]、。

q1:符號配對失敗的情況有多種,需要進行準確的判斷

a1:可以通過devc舉例模擬,也可以通過直接輸入

來對應測試點的要求,可以減少在這方面耽誤的時間,這也是我一排「部分正確」的原因。

q2:一步步修正**後,最後剩下的測試點是配對完所有**後有多餘左括號的情況

a2:遇到左括號只管入棧,會造成最後雖然正常結束遍歷**但棧中仍有剩餘符號,故需要另外進行棧是否為空的判斷,若不為空才是配對成功。

報數遊戲是這樣的:有n個人圍成一圈,按順序從1到n編好號。從第乙個人開始報數,報到m(m

q1:做這道題時思路清晰且用devc處理了編譯錯誤,所以pta上一遍過

a1:queue容器的使用使得佇列的應用容易了許多,只要題意理解,這類題目問題不大。

請編寫程式檢查c語言源程式中下列符號是否配對:/與/、(與)、[與]、。

輸入乙個字尾表示式,程式求出表示式值。

案發現場(這段可以選擇性忽略)

DS部落格作業03 棧和佇列

在createstack函式中為結構體和陣列分配好記憶體,push函式先判斷堆疊是否滿,然後根據tag對相應堆疊進行輸入 pop函式先根據tag判斷對那個堆疊操作,然後再進行判斷是否為空,不空就出棧。q1 輸出搞錯了,滿是沒有輸出tag沒有輸出 q2 沒賦值直接用mystack maxsize 假設...

DS部落格作業03 棧和佇列

本週學習的內容是棧和佇列,相比前一單元的順序表內容,容易了很多,操作上更加簡便。順序表包括順序表和煉表兩塊大內容,順序表的操作主要有建立順序表,查詢順序表中的元素,順序表元素的插入和刪除。鍊錶的主要操作有頭插法建表和尾插法建表,鍊錶的遍歷查詢,有序鍊錶的插入和刪除以及兩個有序鍊錶的合併。而本單元的棧...

DS部落格作業03 棧和佇列

本週學習的棧和佇列,對我來說難點在於棧和佇列的輸出輸入中的棧空和隊空判斷,容易不小心把兩個寫混。在程式設計時,選擇用棧的順序儲存結構空間利用率高,而用鏈式儲存結構可以不用擔心空間的不足或浪費,二者各有優勢,但目前我用順序儲存結構更多。學了棧和佇列,許多問題的解決變得方便了許多,比如括號問題的求解,表...