『壹』 堆棧是什麼意思
類似於隊列,堆棧是個簡單的數據存儲結構。堆棧中數據進出的順序很重要,舉個例子,餐廳的盤子堆,盤子洗完要堆到上面,而不是插到下面的某個位置(相信不會有人那麼做)。當廚師要用到盤子時從最上面的開始拿。即最先放在堆里的盤子會被最後一個用到。
定義:堆棧就是只能在一端插入和刪除數據的鏈表,這個端就叫做棧頂(top),最後一個添加的數據第一個被刪除。因此,這也叫後進先出(LAST IN FIRST OUT)鏈表或是先進後出鏈表(FIRST IN LAST OUT)。
對於堆棧有兩種操作:
進棧指令(PUSH):在棧中現有元素頂部添加一個元素,新加入的元素變為最頂端的元素。
出棧指令(POP):取出棧頂元素,刪除棧中的這個元素。
有些情況下,棧的最大長度有限。如果棧中元素已經達到最大長度,再用進棧指令會造成堆棧上溢出(stack overflow),相似的,如果堆棧已空還用出棧指令會造成堆棧下溢出(stack underflow)。
『貳』 什麼叫堆棧
堆棧其實是數據結果中的兩個概念 ,是存放數據的方式。
堆:順序隨意。
棧:後進先出(Last-In/First-Out)。
要說用處,那就是在寫代碼的時候,有時數據存取肯定是要有規定的順序的,這個是你自己規定的,然後按照你所寫程序的用處的特點來用堆還是棧還是隊列之類的順序。
如果我的回答幫到了你,請點「採納」。
『叄』 什麼是堆棧
堆棧是一種執行「後進先出」演算法的數據結構。
設想有一個直徑不大、一端開口一端封閉的竹筒。有若干個寫有編號的小球,小球的直徑比竹筒的直徑略小。現在把不同編號的小球放到竹筒裡面,可以發現一種規律:先放進去的小球只能後拿出來,反之,後放進去的小球能夠先拿出來。所以「先進後出」就是這種結構的特點。
堆棧就是這樣一種數據結構。它是在內存中開辟一個存儲區域,數據一個一個順序地存入(也就是「壓入——push」)這個區域之中。有一個地址指針總指向最後一個壓入堆棧的數據所在的數據單元,存放這個地址指針的寄存器就叫做堆棧指示器。開始放入數據的單元叫做「棧底」。數據一個一個地存入,這個過程叫做「壓棧」。在壓棧的過程中,每有一個數據壓入堆棧,就放在和前一個單元相連的後面一個單元中,堆棧指示器中的地址自動加1。讀取這些數據時,按照堆棧指示器中的地址讀取數據,堆棧指示器中的地址數自動減 1。這個過程叫做「彈出pop」。如此就實現了後進先出的原則。
堆棧是計算機中最常用的一種數據結構,比如函數的調用在計算機中是用堆棧實現的。
堆棧可以用數組存儲,也可以用以後會介紹的鏈表存儲。
下面是一個堆棧的結構體定義,包括一個棧頂指針,一個數據項數組。棧頂指針最開始指向-1,然後存入數據時,棧頂指針加1,取出數據後,棧頂指針減1。
『肆』 什麼是堆棧
堆是堆(heap),棧是棧(stack),雖然堆棧(heap and stack)有相似之處,但不要混為一談。
本質上講,堆(heap)是一種數據結構,是純軟體的實現。堆基於一定的程序基礎(例如在操作系統),它更加偏向於軟體實現動態的內存管理,令程序運行時根據所需來動態申請/釋放內存。
而棧(stack)既存在軟體實現又存在硬體實現。棧本質上是一種簡單的先進先出結構,主要目的是為程序運行時保存關鍵的現場數據,尤其適合於(嵌套式)中斷的配合。幾乎所有的微控制器/微處理器都具備硬體棧。而軟體/操作系統中又可以進一步建立軟體棧,為線程建立專用的存儲區域。
『伍』 什麼是堆棧
在計算機領域,堆棧是一個不容忽視的概念,但是很多人甚至是計算機專業的人也沒有明確堆棧其實是兩種數據結構。
堆棧都是一種數據項按序排列的數據結構,只能在一端(稱為棧頂(top))對數據項進行插入和刪除。
要點:
堆:順序隨意
棧:後進先出(Last-In/First-Out)
『陸』 什麼叫堆棧
堆棧的概念
堆棧(Stack)是一種比較重要的線性數據結構,如果對數據結構知識不是很了解的話,我們可以把它簡單的看作一維數組。但是對一維數組進行元素的插入、刪除操作時,可以在任何位置進行,而對於棧來說,插入、刪除操作是固定在一端進行的,這一端稱為棧頂(top),另一端稱為棧底(bottom),向棧中插入數據的操作稱為壓入(Push),從棧中刪除數據稱為彈出(Pop)。
二 堆棧的存儲方式
對棧中元素的操作是按後進先出(Last In First Out,簡稱LIFO)的原則進行的,即最後壓入的元素最先彈出。
在棧的操作過程中,有一個永遠指向棧頂的棧頂指針,在壓入和彈出數據時,棧頂指針向上或向下移動。當棧頂指針為零時(即指向棧底的後面),棧為空棧。如果壓入的數據過多超出了棧的最大空間,則發生棧上溢。
在程序設計中,我們可以使用一維數組實現對棧的操作。假設用一維數組s[1..arrmax]表示棧,則對於非空棧,s[1]為最早壓入棧的元素,同時設棧頂指針top,則s[top]為最後壓入棧的元素。當top=arrmax時棧滿,若此時有數據入棧將產生「數組越界」的錯誤,極為棧上溢,反之當top=0,意為棧空。
『柒』 什麼是堆什麼是棧啊
堆(英語:heap)是計算機科學中一類特殊的數據結構的統稱。堆通常是一個可以被看做一棵樹的數組對象。
棧(stack)又名堆棧,它是一種運算受限的線性表。限定僅在表尾進行插入和刪除操作的線性表。這一端被稱為棧頂,相對地,把另一端稱為棧底。
向一個棧插入新元素又稱作進棧、入棧或壓棧,它是把新元素放到棧頂元素的上面,使之成為新的棧頂元素;從一個棧刪除元素又稱作出棧或退棧,它是把棧頂元素刪除掉,使其相鄰的元素成為新的棧頂元素。
(7)什麼是堆棧擴展閱讀:
一、堆的演算法思想
不必將值一個個地插入堆中,通過交換形成堆。假設根的左、右子樹都已是堆,並且根的元素名為R。這種情況下,有兩種可能:
(1) R的值小於或等於其兩個子女,此時堆已完成。
(2) R的值大於其某一個或全部兩個子女的值,此時R應與兩個子女中值較小的一個交換,結果得到一個堆,除非R仍然大於其新子女的一個或全部的兩個。這種情況下,我們只需簡單地繼續這種將R「拉下來」的過程,直至到達某一個層使它小於它的子女,或者它成了葉結點。
二、棧的基本演算法
1、進棧(PUSH)演算法
①若TOP≥n時,則給出溢出信息,作出錯處理(進棧前首先檢查棧是否已滿,滿則溢出;不滿則作②)。
②置TOP=TOP+1(棧指針加1,指向進棧地址)。
③S(TOP)=X,結束(X為新進棧的元素)。
2、退棧(POP)演算法
①若TOP≤0,則給出下溢信息,作出錯處理(退棧前先檢查是否已為空棧, 空則下溢;不空則作②)。
②X=S(TOP),(退棧後的元素賦給X)。
③TOP=TOP-1,結束(棧指針減1,指向棧頂)。
『捌』 什麼是堆棧
堆棧是堆放貨物的倉庫。從地面起自下而上堆放的貨物總是「先進後出」的。
在計算機中,堆棧是用來存放臨時需要暫時儲存的數據的存儲器。是讀寫存儲器RAM中的一個特殊的區域,是一組按照「先進後出」的方式工作的、用於暫存信息的存儲單元。
『玖』 什麼叫堆棧
堆和棧是兩個不同的概念。
堆(heap)上分配的內存,系統不釋放,而且是動態分配的。棧(stack)上分配的內存系統會自動釋放,它是靜態分配的。運行時棧叫堆棧。棧的分配是從內存的高地址向低地址分配的,而堆則相反。由malloc或new分配的內存都是從heap上分配的內存,從heap上分配的內存必須有程序員自己釋放,用free來釋放,否則這塊內存會一直被佔用而得不到釋放,就出現了「內存泄露(Memory
Leak)」。這樣會造成系統的可分配內存的越來越少,導致系統崩潰。
堆棧是一種執行「後進先出」演算法的數據結構。
設想有一個直徑不大、一端開口一端封閉的竹筒。有若干個寫有編號的小球,小球的直徑比竹筒的直徑略小。現在把不同編號的小球放到竹筒裡面,可以發現一種規律:先放進去的小球只能後拿出來,反之,後放進去的小球能夠先拿出來。所以「先進後出」就是這種結構的特點。
堆棧就是這樣一種數據結構。它是在內存中開辟一個存儲區域,數據一個一個順序地存入(也就是「壓入——push」)這個區域之中。有一個地址指針總指向最後一個壓入堆棧的數據所在的數據單元,存放這個地址指針的寄存器就叫做堆棧指示器。開始放入數據的單元叫做「棧底」。數據一個一個地存入,這個過程叫做「壓棧」。在壓棧的過程中,每有一個數據壓入堆棧,就放在和前一個單元相連的後面一個單元中,堆棧指示器中的地址自動加1。讀取這些數據時,按照堆棧指示器中的地址讀取數據,堆棧指示器中的地址數自動減
1。這個過程叫做「彈出pop」。如此就實現了後進先出的原則。
而堆棧寄存器就是存放堆棧的寄存器。