1.學習總結
2.PTA實驗作業
2.1 題目1:字符串是否對稱(20 分)
2.2 設計思路(偽代碼或流程圖)
定義i記錄字符個數;
定義k判斷字符串是否對稱;
定義數組a[i]儲存字符;
while
S->Top1不等於S->MaxSize;
do
將字符入棧;
end
while
S->Top1-1不等於-1;
do
字符出棧;
判斷是否對稱;
end
2.3 代碼截圖
2.4 PTA提交列表說明
錯誤1:將大寫的S寫成了小寫的;
錯誤2:沒有弄清楚棧頂元素的位置,沒有找對進行比較的元素對應位置;
解決方法:將小寫s改為大寫,通過調試找到比較元素對應位置;
2.1 題目2:表達式轉換
2.2設計思路(偽代碼或流程圖)
定義len來記錄字符串長度;
定義數組a輸入存儲字符;
定義數組b來存儲字符輸出順序;
for i=0 to len-1
判斷a[i]是否為數字,是則存入數組b;
若不是則入棧;
根據符號優先級判斷符號出棧順序;
end for
2.3 代碼截圖
2.4 PTA提交列表說明。
錯誤1:使用getchar()讀取字符,導致字符進出棧錯誤.
錯誤2:以為表達式不超過20個字符是數字加符號不超過20.
解決方法:將getchar()改為gets(),改變數組的存儲范圍。
2.1 題目3:jmu-報數游戲
2.2設計思路(偽代碼或流程圖)
定義數組 a存儲人的編號;
定義數組b存儲報到m的人的編號;
定義count記錄隊列的元素個素;
while count大於等於1
do
將報到m前面的編號出隊,再重新入隊;
記錄報到m的編號,並將其出隊;
在隊列元素小於m時,將剩下的元素出隊;
end
2.3 代碼截圖
2.4 PTA提交列表說明。
錯誤1:提交時沒有把編譯環境改為c++.
錯誤2:漏了判斷報到數大於總人數的情況.
錯誤3:一開始的時候沒有把元素全部入隊,而是入到第m個的時候把m前面的全部出隊,再重新入隊,導致有些數根本沒有入隊。
解決方法:將環境改為c++,加上判斷報到數是否大於總人數的表達式,將元素先全部入隊,再判斷它們的出隊順序和再入隊順序。
3.截圖本周題目集的PTA最后排名
3.1 棧PTA排名
3.2 隊列PTA排名
3.3 我的總分:2分
4. 閱讀代碼
鏈接:https://gitee.com/zhoubinghui/data_structure/blob/master/%E9%98%9F%E5%88%97/7-5%EF%BC%88%E9%80%89%E5%81%9A%EF%BC%89%20%E5%A0%86%E6%A0%88%E6%A8%A1%E6%8B%9F%E9%98%9F%E5%88%97.cpp
功能:堆棧模擬隊列
優點:簡單易懂,很容易看懂如何使兩個堆棧模擬出一個隊列。