什麼叫堆疊,什麼叫做堆疊?

2022-05-08 00:45:04 字數 3549 閱讀 6290

1樓:真·踏網無痕

堆疊的概念

堆疊(stack)是一種比較重要的線性資料結構,如果對資料結構知識不是很了解的話,我們可以把它簡單的看作一維陣列。但是對一維陣列進行元素的插入、刪除操作時,可以在任何位置進行,而對於棧來說,插入、刪除操作是固定在一端進行的,這一端稱為棧頂(top),另一端稱為棧底(bottom),向棧中插入資料的操作稱為壓入(push),從棧中刪除資料稱為彈出(pop)。

二 堆疊的儲存方式

對棧中元素的操作是按後進先出(last in first out,簡稱lifo)的原則進行的,即最後壓入的元素最先彈出。

在棧的操作過程中,有乙個永遠指向棧頂的棧頂指標,在壓入和彈出資料時,棧頂指標向上或向下移動。當棧頂指標為零時(即指向棧底的後面),棧為空棧。如果壓入的資料過多超出了棧的最大空間,則發生棧上溢。

在程式設計中,我們可以使用一維陣列實現對棧的操作。假設用一維陣列s[1..arrmax]表示棧,則對於非空棧,s[1]為最早壓入棧的元素,同時設棧頂指標top,則s[top]為最後壓入棧的元素。

當top=arrmax時棧滿,若此時有資料入棧將產生「陣列越界」的錯誤,極為棧上溢,反之當top=0,意為棧空。

2樓:匿名使用者

堆疊是記憶體區開闢出來為函式中定義的變數(除了new以外的定義)提供儲存空間的區域。

顧名思義,資料在堆疊中 的儲存就是乙個乙個堆上去的,就是說後放的變數存在最上面(棧頂),所以從堆疊中取出變數時它最先被取出,(後進先出)。

什麼叫做堆疊?

3樓:小凱

堆和棧是兩個不同的概念。 堆(heap)上分配的記憶體,系統不釋放,而且是動態分配的。棧(stack)上分配的記憶體系統會自動釋放,它是靜態分配的。

執行時棧叫堆疊。棧的分配是從記憶體的高位址向低位址分配的,而堆則相反。由malloc或new分配的記憶體都是從heap上分配的記憶體,從heap上分配的記憶體必須有程式設計師自己釋放,用free來釋放,否則這塊記憶體會一直被佔用而得不到釋放,就出現了「記憶體洩露(memory leak)」。

這樣會造成系統的可分配記憶體的越來越少,導致系統崩潰。 堆疊是一種執行「後進先出」演算法的資料結構。 設想有乙個直徑不大、一端開口一端封閉的竹筒。

有若干個寫有編號的小球,小球的直徑比竹筒的直徑略小。現在把不同編號的小球放到竹筒裡面,可以發現一種規律:先放進去的小球只能後拿出來,反之,後放進去的小球能夠先拿出來。

所以「先進後出」就是這種結構的特點。 堆疊就是這樣一種資料結構。它是在記憶體中開闢乙個儲存區域,資料乙個乙個順序地存入(也就是「壓入——push」)這個區域之中。

有乙個位址指標總指向最後乙個壓入堆疊的資料所在的資料單元,存放這個位址指標的暫存器就叫做堆疊指示器。開始放入資料的單元叫做「棧底」。資料乙個乙個地存入,這個過程叫做「壓棧」。

在壓棧的過程中,每有乙個資料壓入堆疊,就放在和前乙個單元相連的後面乙個單元中,堆疊指示器中的位址自動加1。讀取這些資料時,按照堆疊指示器中的位址讀取資料,堆疊指示器中的位址數自動減 1。這個過程叫做「彈出pop」。

如此就實現了後進先出的原則。 而堆疊暫存器就是存放堆疊的暫存器。

「堆疊」是什麼意思?

4樓:李家思

堆疊是一種執行「後進先出」演算法的資料結構。

設想有乙個直徑不大、一端開口一端封閉的竹筒。有若干個寫有編號的小球,小球的直徑比竹筒的直徑略小。現在把不同編號的小球放到竹筒裡面,可以發現一種規律:

先放進去的小球只能後拿出來,反之,後放進去的小球能夠先拿出來。所以「先進後出」就是這種結構的特點。

堆疊就是這樣一種資料結構。它是在記憶體中開闢乙個儲存區域,資料乙個乙個順序地存入(也就是「壓入——push」)這個區域之中。有乙個位址指標總指向最後乙個壓入堆疊的資料所在的資料單元,存放這個位址指標的暫存器就叫做堆疊指示器。

開始放入資料的單元叫做「棧底」。資料乙個乙個地存入,這個過程叫做「壓棧」。在壓棧的過程中,每有乙個資料壓入堆疊,就放在和前乙個單元相連的後面乙個單元中,堆疊指示器中的位址自動加1。

讀取這些資料時,按照堆疊指示器中的位址讀取資料,堆疊指示器中的位址數自動減 1。這個過程叫做「彈出pop」。如此就實現了後進先出的原則。

堆疊是計算機中最常用的一種資料結構,比如函式的呼叫在計算機中是用堆疊實現的。

堆疊可以用陣列儲存,也可以用以後會介紹的連結串列儲存。

下面是乙個堆疊的結構體定義,包括乙個棧頂指標,乙個資料項陣列。棧頂指標最開始指向-1,然後存入資料時,棧頂指標加1,取出資料後,棧頂指標減1。

#define max_size 100

typedef int data_type;

struct stack;

5樓:奚雪瑤鄢奧

1這裡就是指棧(stack),堆(heap)和棧是兩個概念

2你理解的沒錯,區域性變數是在棧上分配的,具有區域性作用域,程式自動管理,堆上的資料具有全域性作用域,需要手工**。

6樓:

3d max裡的堆疊是什麼意思?

j**a中什麼叫堆疊???

7樓:匿名使用者

和別的一樣啊,就是後進去的先出來!

8樓:

堆heap 是放new出來的東西

棧stack 是放變數的

9樓:匿名使用者

兩個解釋

1.一種類,表示一種資料結構。

如stack類,他遵循一種後進先出的方法。

2.表示記憶體區域。

其中堆具有可隨意分配,收回,以及容量大等特點,主要用來存放物件如string object。

而棧具有速度快,但數量有限等特點,主要用來存放物件的引用,以及基本資料如int long等 。

資料:stack 類表示後進先出(lifo)的物件堆疊。它通過五個操作對類 vector 進行了擴充套件 ,允許將向量視為堆疊。

它提供了通常的 push 和 pop 操作,以及取棧頂點的 peek 方法、測試堆疊是否為空的 empty 方法、在堆疊中查詢項並確定到棧頂距離的 search 方法。

什麼是堆疊?堆疊的操作方式有哪兩種?

10樓:谷谷雪烏昊

堆疊是一種執行「後進先出」演算法的資料結構。

堆疊就是這樣一種資料結構。它是在記憶體中開闢乙個儲存區域,資料乙個乙個順序地存入(也就是「壓入——push」)這個區域之中。有乙個位址指標總指向最後乙個壓入堆疊的資料所在的資料單元,存放這個位址指標的暫存器就叫做堆疊指示器。

開始放入資料的單元叫做「棧底」。資料乙個乙個地存入,這個過程叫做「壓棧」。在壓棧的過程中,每有乙個資料壓入堆疊,就放在和前乙個單元相連的後面乙個單元中,堆疊指示器中的位址自動加1。

讀取這些資料時,按照堆疊指示器中的位址讀取資料,堆疊指示器中的位址數自動減

1。這個過程叫做「彈出pop」。如此就實現了後進先出的原則。

最基本的操作方式

就是入棧和出棧

11樓:狄冷玉佛文

壓棧和出棧。壓棧是將資料存入棧區,出棧是提取存進去的資料。堆疊的操作特點是,先進先出。謝謝採納。

不同型號的交換機可以堆疊嗎,什麼叫交換機的堆疊?

交換機要堆疊時,需用乙個專用介面,在對網速需要不重要時的網路,不需要堆疊,只用一或者兩根網路把現個交換機的lan連線就可以了。堆疊的目的是把埠少的裝置變成更多埠的裝置。條件是都要有堆疊埠,通訊速度要相同,背板頻寬要相同。最重要的只能是區域網交換機 乙太網 三層交換機的管理機制很難堆疊,成本也是不能接...

關於堆疊和變數儲存,c語言裡什麼變數儲存在堆中什麼變數儲存在棧中啊!

1.c語言中的堆疊是一種資料結構,它表示按照規定強制要求按fifo或filo的方式進行資料讀寫,是軟體層面的意義,你需要定義pop push的具體操作。而微控制器中的堆疊是硬體層面的意義,其實現是通過硬體電路實現的,push pop操作時固定的,你無法改變 2.微控制器分為兩種,哈佛體系和普林斯頓體...

冗餘和雙機熱備有什麼區別,交換機堆疊和熱備的區別

冗餘 指重複配置系統的一些部件,當系統發生故障時,冗餘配置的部件介入並承擔故障部件的工作,由此減少系統的故障時間。雙機熱備 就是對於重要的服務,使用兩台伺服器,互相備份,共同執行同一服務。當一台伺服器出現故障時,可以由另一台伺服器承擔服務任務,從而在不需要人工干預的情況下,自動保證系統能持續提供服務...