第三章學習總結
阿新 • • 發佈:2019-04-01
更強 style 初始化 不同 就是 ont 輸出 地方 != while循環和switch函數,遇到左括號壓入棧(Push),遇到右括號就進行匹配。然後我結合書本沒有定義獲取棧頂元素的函數GetTop,而是直接輸出棧頂元素(用Pop函數,返回一個char類型的字符),將flag賦值為1,進行匹配後成功則跳出循環,不成功將flag賦值為0,最後用if判斷棧是否為空或者flag是否為1,並按要求輸出yes或no,基本問題不大。
兩個隊列都不為空的情況,這時候判斷條件為:while((QA.front!=QA.rear)&&(QB.front!=QB.rear)&&(QA.rear-QA.front)%1000>=2),兩次A隊出隊,一次B隊出隊,之後還要考慮B為空A不為空,判斷條件:
第三章 棧和隊列
本章我們學習了線性結構的另外兩種表現形式:棧和隊列。
棧:只限定僅在表尾進行插入或刪除的線性表。表尾段稱作棧頂,表頭端稱作棧底,它的修改原則是後進先出,用於按照保存數據時的相反順序來使用數據。類似於我們生活中放書拿書,最後疊上去的最早被抽出來。
隊列:是一種先進先出的線性表,它只允許在表的一段進行插入,而在另一端刪除元素。允許插入的一段稱為隊尾,允許刪除的一段稱為隊頭。它類似於我們生活中排隊買東西,先來的先買,先輸入的數據先輸出。
接下來談談我在做作業時所遇到的問題。
括號匹配問題
一開始沒能將棧的知識與題目進行聯系,簡單來說就是一腦懵逼。後來經過老師上課和書本上的提示,了解了大致的算法。於是創建棧、初始化棧、運用
銀行排隊問題
雖然題目看起來很復雜,但它實際上就是入隊和出隊另一種表現。我用了循環隊列的形式,一樣的定義順序結構,初始化循環隊列、輸入元素輸出元素。唯一有一些頭疼的地方就是,由於要定義兩個隊列A、B,輸出順序有所不同,首先要考慮AB
while(QA.front!=QA.rear),A為空B不為空:while(QB.front!=QB.rear),將依次輸出的數字放到新定義的數組中去,最後將數組輸出即可。
經過作業和實踐,我對鏈表的使用也更加清晰,對數據結構的真實含義有了更進一步的理解:數據結構是把我們之前所學過的最基本的語法進行疊加改造,最後組成一個功能更強的語句,便於我們解決後續更多復雜的問題,實現更復雜的算法。
第三章學習總結