#1.本週學習總結(0--1分) ##談談你對棧和隊列結構的認識及學習體會。 ###體會:本章學習了棧和隊列,堆棧和隊列都是特殊的線性表,其數據元素以及數據元素之間的邏輯關係徹底相同, 區別在於:線性表的插入和刪除操做不受限制,堆棧只能在棧頂插入和刪除,隊列只能在隊尾插入,在隊頭刪除. 棧的特色仍是很是有意思的,對於解決迷宮問題時有很好的 做用,棧的結構能保證迷宮問題中指針神時候進 去何時出來,經過保存從入口到當前位置的路徑上走過的方塊,能夠保證全部位置能夠原路返回。總之, 對於棧和隊列的知識的初步瞭解後發現了「新大陸」,對於解決通常問題又多了同樣好的「工具」。收穫滿滿ios
#.PTA實驗做業(6分) 本週要求挑4道題目寫設計思路、調試過程。題目選作要求: 棧、隊列函數題目分別選擇1題 棧、隊列編程題分別選擇1題 原則上題目選擇越難,代碼量越大分值越高。 ##2.1.題目1:另類堆棧 ##2.1.1設計思路編程
begin: bool push() {if(是否到結尾) { 是,返回false; } else { 未到尾部,遍歷date[s->top]; s->top++; } Elementpty pop() { if:數值出現0 ,return false; } else { s->top--; 返回data值; } end;``` 函數體不要寫設計思路。編程題用文字描述設計思路。(可不寫僞代碼) ##2.1.2代碼截圖  ##2.1.3本題PTA提交列表說明。  get:這道題比較簡單,經過補充兩個函數體bool push ()和ElementType pop()來實現入棧,出棧和簡單判斷 ##PTA提交列表中的每一個錯誤詳細說明爲何及如何解決。如圖:  我的以爲這個函數中 s->top--這裏容易出錯 ##2.2 題目2:舞伴問題 ##2.2.1代碼截圖   ##2.2.2本題PTA提交列表說明。    ```這道題上級考試和平時作題都一併說了吧。 說明:上機考試只要求寫出判斷空隊列和隊列長度和舞伴問題的函數體,可是如截圖作了幾回可是仍是編譯錯誤(big head...),後續修改中對比了一下以前作的 是由於舞伴問題函數中的{}沒有寫對,還有部分數據結構函數術語拼寫錯誤QAQ get: first:對於隊列的某些特色有了更深刻的瞭解,如本題中就將隊列運算只容許在表的一端進行插入的特色體現出來了,開始我設置的tear隊尾是容許插入的一端, 對頭front是容許刪除的 一端,總之就是先進先出,插入受限。 last:隊列是一種特殊的線性表,和線性表有共同和不一樣的特色。
##2.3 題目3:銀行業務問題數組
代碼思路:數據結構
#include...... #..... using namespace std; ----------首先寫出固定代碼 main(){ 定義i,n; 定義數組a[],sum=-1; 申請一個隊列q; for(){ 遍歷輸入數組a[]的元素;if(a[i]%2==1) 保留i的值; } for(){ 循環判斷數組元素各條件下的輸出狀況(其中有該當原數組元素) }
2.3.1代碼截圖 函數
2.3.2提交列表(含上機考試截圖)
工具
說明: 1.上級考試中對於隊列中有些函數調用的不熟悉,因此致使編譯錯誤,如頭"front" 常常寫成"frout" 2.關於部分部分正確的狀況我也是很迷,不知道錯在哪,最後胡搞搞出了正確答案,提示上說過了2個測試點,第0 個測試點和第5 6個測試點沒過,其中問題出在函數體調用對於題目問題的所要求不一。只得兩分(部分正確) ##題目2.4:符號配對問題學習
思路:測試
對於這道符合配對的問題上機考試和pta作題時思路比較混亂,因此致使上級考試時主動放棄的這題,badly,不巧恰好抽到它,由於這題真是又臭又長,很亂 begin: { #include<iostream> ..... ...... ...... main() { 定義i,flag 字符數組str[] for(){ getline以指定的地址爲存放第一個讀取的字符的位置,依次向後存放讀取的字符 判斷" . "的狀況,是,break; then: for(不爲" . " 時) { for(用j遍歷){ flag 用上 } then: 二維數組a[]的遍歷給str[]; part:--------》進行符號配對,僞代碼很差表示 if(s.empty()==true&&str3==" ") cout<<"YES"; if(s.empty()==true&&str3!=" ") { cout<<"NO"<<endl; for(int o=0;o<=3;o++) { if(str3==str1[o]) cout<<str3<<"-?"; if(str3==str2[o]) cout<<"?-"<<str3; } } if(s.empty()==false&&str3==" ") { cout<<"NO"<<endl; for(int o=0;o<=3;o++) { if(s.top()==str1[o]) cout<<s.top()<<"-?"; if(s.top()==str2[o]) cout<<"?-"<<s.top(); } } }
2.4.1代碼截圖:
2.4.2提交列表及說明
spa
#三、棧和隊列上機考試(-3--3分) 對於2-1 我真是無語了 粗心錯了,這個題目關於棧的很簡單 能夠經過草圖瞭解決 對於C選項不可能1出2 還在棧裏面,由於進棧是隻能先進1和再進2 對於2-2 答案是b 當時答案搖擺不定但最終仍是選錯了,最後選擇B爲正確答案,說明當頭指針指向尾指針時隊列爲空設計