數據結構 棧與隊列知識小結
本章介紹了兩種特殊的線性表:棧和隊列,主要內容如下:
(1)棧是限定僅在表尾進行插入和刪除的線性表,又稱為後進先出的的線性表。
兩種存儲結構:(順序表示)順序棧、鏈棧(鏈式表示)。
主要操作:進棧、出棧;
對於順序棧的進棧和出棧註意要判斷棧滿和棧空;
(2)隊列是一種先進先出的線性表。它只允許在表的一端進行插入,而在另一端刪除元素;
兩種存儲結構:(順序表示)循環隊列、(鏈式表示)鏈隊;
主要操作:進隊、出隊。
對於順序的循環隊列的進隊和出隊操作要判斷隊滿或隊空;
??凡是涉及隊頭或隊尾指針的修改都要將其隊MAXQSIZE求模;(這是我學這一章感覺最巧妙的地方!!!!!!!覺得特別巧妙,用這種方式實現循環);
接著就是學習關於棧和隊列的種種操作;
1、用棧實現的學習了兩個案例:數制轉換和括號匹配以及遞歸;
1)關於數制轉換這裏,老師當時講的那個直接返回結果,用while(.......... sum = sum*10+tmp),這裏的tmp是n每次%10取出的數字;最後返回sum即是結果,我覺得十分巧妙,自己當時是沒想到的;自己當時想的是用一個字符串存起來,再將它倒置即可;
2)括號匹配這裏,我覺得思想也十分巧妙;一開始我是想說不用棧實現可以嗎,然後就用自己的方法取實現,一開始有一點像雙向隊列的思想,主要是被一種形式限制住了,以為括號匹配是這種[{}],或者[[[(({}))]]],所以我每次都取頭跟尾進行匹配
3)遞歸:遞歸這裏我覺得我是學的不是那麽熟的,很少自己寫過遞歸,上學期是學過遞歸的,但是沒有自己實現過,雖然懂它的思想,但是從思想上升到自己實現還是有一大段路要走的,然後這學期用過遞歸,主要是在ACM中師兄教了那個深度搜索(dfs)但是自己其實也還不是那麽熟練。
2、隊列
隊列的話,老師給了我們一道編程題,銀行隊列窗口模擬,一開始也是用stl去實現,然後再把stl的底層慢慢去實現;
總結:關於上次定的目標,我覺得沒有百分百達到;
這章我覺得我得還好,課本的知識其實不是那麽熟,覺得課本有時講的太冗長,但是正是這些底層實現的東西我們還是需要去學習的,不能總是拿現成的來用;
下一章的學習目標:希望自己能悟出下一章算法的思想精髓,學到一些很巧妙的思想,並能又思想上升到實現的階段!
數據結構 棧與隊列知識小結