堆、棧概念

堆:

①堆一般是一個能夠被看作一棵樹的數組對象。堆老是知足下列性質:數組

        ·堆中某個節點的值老是不大於或不小於其父節點的值;多線程

        ·堆老是一棵徹底二叉樹。將根節點最大的堆叫作最大堆或大根堆,根節點最小的堆叫作最小堆或小根堆。常見的堆有二叉堆、斐波那契堆等。spa

②堆是在程序運行時,而不是在程序編譯時,申請某個大小的內存空間。即動態分配內存,對其訪問和對通常內存的訪問沒有區別。操作系統

③堆是應用程序在運行的時候請求操做系統分配給本身內存,通常是申請/給予的過程。線程

④堆是指程序運行時申請的動態內存,而棧只是指一種使用堆的方法(即先進後出)。對象

 

棧:

棧(stack)又名堆棧,一個數據集合,能夠理解爲只能在一端進行插入或刪除操做的列表。其限制是僅容許在表的一端進行插入和刪除運算。這一端被稱爲棧頂,相對地,把另外一端稱爲棧底進程

②棧就是一個桶,後放進去的先拿出來,它下面原本有的東西要等它出來以後才能出來(先進後出)內存

③棧(Stack)是操做系統在創建某個進程時或者線程(在支持多線程的操做系統中是線程)爲這個線程創建的存儲區域,該區域具備FIFO的特性,在編譯的時候能夠指定須要的Stack的大小。get

棧的基本操做:
  進棧(壓棧):push
  出棧:pop
  取棧頂:gettop編譯

相關文章
相關標籤/搜索