回覆列表
-
1 # maimi32709
-
2 # 使用者3456175603979
資料結構中的堆實質上是滿足一定性質的完全二叉樹:二叉樹中任一非葉子結點關鍵字的值均小於(大於)它的孩子結點的關鍵字。在小根堆中,第一個元素(完全二叉樹的根結點)的關鍵字最小;大根堆中,第一個元素(完全二叉樹的根結點)的關鍵字最大,顯然,堆中任一子樹仍是一個堆。
滿二叉樹:(1)任一個非葉子結點均有兩個孩子 (2)對於二叉樹的任一層,若該層上有一個結點有孩子,則該層上每一個結點均有孩子。
資料結構中的棧(又名堆疊),指的是一個後進先出(Last in first out)的線性表,有順序棧、鏈棧。
早在上世紀50年代,支援LIFO堆疊的計算機就已經使用了。早先,堆疊應用於來提高像ALGOL這樣的高階語言的執行效率。那時起,這種結構受到了硬體設計師的喜愛,最後成為大多數計算機的輔助資料處理結構。令堆疊結構的擁護者失望的是,以堆疊為主要資料處理體系的計算機並沒有被熱忠於暫存器結構的人廣泛接受。 由於大規模積體電路(VLSI)處理器的引入,傳統的計算機設計方法出現了新的問題。CISC指令集計算機逐步發展為無所不包的,複雜指令集的處理器。受到了RISC處理器挑戰,它以直接解碼的精簡處理核來加速一些應用程式。 堆疊計算機再次被提起被認為是其他體系的替換方案。新型堆疊機基於VLSI技術設計提供了以前堆疊機沒有的其他優點。這些新型堆疊機綜合了他們共同特點獲得了良好的整體速度,且結構靈巧和簡單。 堆疊機提供的處理器沒有CICS結構的那麼複雜,且整個系統也沒有RISC和CISC結構的機器複雜。也不需要複雜的編譯器或為了獲得更好的效能增加快取控制器。 他們也獲得了更具競爭力的效能和優秀的價效比表現。他們最成功的應用就是應用於在反應時間要求很高的實時嵌入控制系統。堆疊機也最有希望執行像prolog這樣的邏輯程式語言,Miranda和scheme函式語言,和人工智慧語言(ops-5,lisp)。 新式與老式的堆疊機主要不同為容量更大,更高速的專用的堆疊記憶體的效率。老式的結構直接系統記憶體,而新的堆疊機使用專用或直接整合的專用堆疊記憶體。這些堆疊記憶體使那些中斷處理和任務切換子程式呼叫程式碼更長、數量更多。特性加在一起,構成了一個運算高速,體系靈巧,結構簡單的計算機系統。