棧與佇列學習筆記

2021-07-02 21:20:44 字數 861 閱讀 4968

【棧】

對於涉及到反方向的題目,可以思考是否設定堆疊型別的資料結構:

int initial_stack(stack s){}

int pop(s,node x){}

int push(s,node x){}

【佇列】

涉及到佇列的內容,做好相應的初始化基本操作函式:

int initial_queue(queue q){}

int en_queue(queue q,node x){}

int de_queue(queue q,node x){}

這樣處理起來程式結構就會清晰很多

【遞迴】

乙個直接呼叫自己或通過一系列的語句間接地呼叫自己的函式,叫遞迴函式。比如:

階乘函式:

fact(n)= 1                             若n=0

= n*fact(n-1)           若n>0

2階fibonacci數列

fib(n) = 0                                若n=0

= 1                                 若n=1

= fib(n-1) + fib(n-2)  其他情況

和ackerman函式

ack(m,n) = n+1                                 若m=0

= ack(m-1,1)                     若n=0

=ack(m-1,ack(m,n-1))     其他情況

學習筆記 單調佇列與單調棧

乙個具有單調性的棧。插入乙個元素時,如果直接插入不滿足單調性,就一直彈出,直到插入後滿足單調為止。luogu p1886 loj p10175 meaning of the problem 給你乙個數列 a 多組長度為 k 的區間的最大值與最小值。solution 一道非常經典的單調佇列題。以最大值...

佇列與棧 的筆記

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

棧與佇列的學習

queuem m.empty 是的話返回true,不是返回false m.push 從已有元素後面增加元素 m.size 輸出現有元素的個數 m.front 顯示第乙個元素 m.back 顯示最後乙個元素 m.pop 清除第乙個元素 不返回該元素 m.size 統計佇列個數 棧 stack 先進後出...