佇列與棧 的筆記

2021-07-16 01:27:17 字數 1008 閱讀 3009

實話說,其實從高中開始學資訊奧賽時開始,一直重點都是學習演算法以及思想,根本沒怎麼理會資料結構,因為除了了樹結構,其它的結構都可以籠統歸到方法思想這一類,所以從來遇到問題,都是想用什麼什麼方法,然後這方法後來才發現原來叫「棧」「佇列」。

也就是說,接觸到的問題的解決方案裡,從來都是用到了它們的思想,並且是它們的變種,根本沒有學習過什麼是最簡單的「棧」「佇列」。由於用到的都是自創的變種,也導致演算法複雜度上可以說是五花八門,畢竟根據實際需求,自己擴增一些屬性,從而可以優化複雜度,當然,代價就是占用儲存量增加。

結果,最近面試總是被問到最簡單的「棧」「佇列」,然後就懵了,平常誰管這是「棧」「佇列」啊,都是根據實際情況,直接寫個變種啊。

不得不還是好好想想最簡單的佇列與棧應該是怎麼的,畢竟還是要應付面試...

「棧」的思想是後進先出,也就是說為了實現這個思想,最少的要素是什麼?

class myele

;class mystack

;

也就是說 每個元素ele只要有乙個指向前面ele的指標ptr_father_,  以及資料結構mystack中只要儲存當前棧末尾的指標ptr_current_,然後再寫些操作函式,就能實現棧的最基本功能,也就是說上面列出來的就是最基本的 棧,以後棧的各種操作複雜度,用這個來分析即可。

至於佇列,思想為「先進先出」,那麼最少的要素為:

class myele

;class myqueue

;

也就是說 每個元素ele只要有乙個指向後面的ele的指標ptr_next_,  以及資料結構myqueue中只要儲存當前佇列末尾的指標ptr_current_以及佇列頭指標ptr_head_。

然後再寫些操作函式,就能實現佇列的最基本功能,也就是說上面列出來的就是最基本的 佇列,以後佇列的各種操作複雜度,用這個來分析即可。

好了,這樣就舒坦多了,以後叫我分析棧與佇列都按照前面最基本元素進行分析。免得每次我都沒頭緒,到底棧,佇列裡哪些指標有,哪些指標沒有...

棧與佇列學習筆記

棧 對於涉及到反方向的題目,可以思考是否設定堆疊型別的資料結構 int initial stack stack s int pop s,node x int push s,node x 佇列 涉及到佇列的內容,做好相應的初始化基本操作函式 int initial queue queue q int ...

棧與佇列 建立棧 佇列

陣列棧 完成stack createstack int maxelements 函式,該函式建立乙個棧,maxelements為與分配的棧空間大小 棧可用空間為array 0,maxelements 1 typedef int elemtype struct stackrecord typedef ...

棧 佇列與優先佇列

123 45 include stack int s 入棧 push 出棧 pop 取棧頂top 123 45 include queue int s 入隊 push 出隊 pop 取隊首元素 front 不刪除 123 4priority queue int pq 入隊 push 出隊 pop 取...