第03次作業-棧和隊列


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

功能:堆棧模擬隊列

優點:簡單易懂,很容易看懂如何使兩個堆棧模擬出一個隊列。

5. 代碼Git提交記錄截圖


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM