金豬腳本(原飛豬腳本)以按鍵精靈教學為主,涉及UiBot,Python,Lua等腳本編程語言,教學包括全自動辦公腳本,遊戲輔助腳本,引流腳本,網頁腳本,安卓腳本,IOS腳本,注冊腳本,點贊腳本,閱讀腳本以及網賺腳本等各個領域。想學習按鍵精靈的朋友可以添加金豬腳本粉絲交流群:554127455 學習路上不再孤單,金豬腳本伴你一同成長.
上面這個是:什麼是堆棧。我這兒就不再介紹。如果不懂的朋友,可以去看看。
小妖也不是太精,隻能舉例子來給大家說明。說得不好的,多多指點。
按鍵裡面沒有堆棧的概念。因為沒有地址操作(個人理解,大概是那麼回事)。
小妖隻能模仿。利用數組做。
堆:
我這兒說的堆,差不多就是樹了。
樹_百度百科
比較懶,直接用網上的圖了,這兒是滿二叉樹。當然,這個樹可以不是二叉樹,也可以不是滿的。
我先做一個三層的二叉樹。讓大家明白樹怎麼做。
複制代碼
上面,我們定義了一個二叉樹,根節點是a。并且實現遍曆這個二叉樹。
這個樹,可以寫成任意樹。不僅僅是二叉樹。
當然,定義樹的時候,那樣一個一個定義比較費力。建議用數組或者是什麼來定義。
小妖這兒就不詳細說了。有興趣的同學可以回帖讨論。
當然了,後面小妖還會繼續講棧和隊列(實際上上面的代碼已經使用了棧,因為這兒使用了遞歸)。
[backcolor=rgb(247,247,247)]估計大家沒意識到這個堆的用處。我們來舉個例子,比如我們要在一個很大的學校找一個人。那麼如果我們直接一個一個的找,估計找幾天,大的學校估計幾個月。如果我們用堆。
複制代碼
甚至說,我們可以知道這個學校有幾個系,每個系有哪些班級,每個班級有哪些人。
小妖這兒僅僅是抛磚引玉。更多的應用,估計其他語言在樹這個運用上已經出神入化。小妖就不再細說。有想法的同學可以跟貼讨論。
棧:
棧就比較常用了。
棧就像一個樓梯,每次增加一個數的時候,你就得往上爬一格。每次減少的時候,你就往下走一格。
54321
像上面這個,從最下面開始裝值,如果增加就往上,如果減少就往下。
例子:
我們做一個從1加到5.
複制代碼
第一次運行的時候,參數累加值為5,累加值不等于1所以運行[backcolor=rgb(247,247,247)]累加=5 累加(5-1)。
所以,這時候最下面的那個棧已經裝入值5了,如下:
[backcolor=rgb(247,247,247)]5 累加(5-1)
這兒其實還沒運行完,因為這兒的累加(5-1)還需要再運行。
所以是運行累加(5-1),其實就是運行:累加(4)。
和上面一樣,隻是參數變成了4。
所以這兒的棧在之前的基礎上,上移一格,進行入棧操作。
[backcolor=rgb(247,247,247)]4 累加(4-1)[backcolor=rgb(247,247,247)]5 累加(5-1)
這樣。一直到瞞住參數=1。
這時候,就開始返回值了。
累加(1)=1[backcolor=rgb(247,247,247)]2 累加(2-1)[backcolor=rgb(247,247,247)]3 累加(3-1)[backcolor=rgb(247,247,247)]4 累加(4-1)[backcolor=rgb(247,247,247)]5 累加(5-1)
這樣滿足條件之後,開始返回值。
[backcolor=rgb(247,247,247)]累加 = 1
這是累加函數返回值,而且這個值是1。
所以,累加(2)=2 累加(1)=2 1=3
累加(3)=3 累加(2)=3 3=6
累加(4)=4 累加(3)=4 6=10
累加(5)=5 累加(4)=5 10=15
這樣就把1加到5的值計算出來了。
如果是1加到100,隻需要把參數改成100就可以了。
如果是5加到100,隻需要判斷參數等于5的時候,就累加=5這樣。
實際上,上面就是遞歸。它使用了棧。所以說,遞歸實際上是耗費了内存的。如果過于龐大的數字,建議不要直接使用遞歸。
最後,我們來說隊列。
其實,隊列和棧是一樣的。隻是,隊列是先進先出。
比如,我們這兒有一個隊列。
複制代碼
上面代碼,寫的是一個隊列。出列是第一個出去,入列的是在後面入列。
當然了,你現在還不明白這有什麼用。我們來舉個例子。
複制代碼
上面是我利用入列出列寫的約瑟夫環。主要思想為,數到的人就出列。如果數到并且不為K,那麼就入列到後面去。如果是K,那麼就退出環。一直到剩下最後一個人。代碼都在上面了,我已經把出列和入列操作融合到代碼裡面了。仔細看下就明白。這樣,小妖就把隊列說完了。當然了,實際運用的時候,比如廣度優先算法的核心就是這個隊列。還有很多算法,他們都是基于以上3個方法。所有如果大家把這幾個看懂了,很多很多算法,也就不在話下了。
最後,如果有看不懂的,或者什麼意見建議,歡迎加群讨論!554127455
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!