1樓:偉春酒妍
在計算機領域,堆疊是乙個不容忽視的概念,但是猛敬很多人甚至是搜高計算機專業的人也沒有明確堆疊其實是兩種資料結構。
堆疊都是世知尺一種資料項按序排列的資料結構,只能在一端(稱為棧頂(top))對資料項進行插入和刪除。
要點:堆:順序隨意。
棧:後進先出(last-in/first-out)詳細資料:
2樓:郯秋英紹亥
儲存資料,指令位址等。
棧:在函式呼叫時,第乙個進棧的是主函式中函式呼叫後的下一條指令(函式呼叫語句的下胡晌一條可執行語句)的位址,然後是函式的各個引數,在大多數的c編譯器中,引數是由右往左入棧的,然後是函式中的局桐基部變數。注意靜態變數是不入棧的。
當本次函式呼叫結束後,局做謹區域性變數先出棧,然後是引數,最後棧頂指標指向最開始存的位址,也就是主函式中的下一條指令,程式由該點繼續執行。
堆:一般是在堆的頭部用乙個位元組存放堆的大小。堆中的具體內容有程式設計師安排。
全文見百科。
簡述什麼是堆疊,以及堆疊中入棧,出棧的過程
3樓:網友
堆疊其實是兩種資料結構。堆疊都是一種資料項按序排列的資料結構,只能在一端。
稱為棧頂(top))
對資料項進行插入和刪除。要點:堆,順序隨意。
棧,後進先出(last-in/first-out)。
針對棧這種資料結構的基本操作有兩種:壓棧和彈出,在棧幀中包含兩個標誌---棧底和棧頂,其中棧頂標識著要push或pop
的資料的位址,而棧底則表示棧幀中最後乙個資料的記憶體位址。
在win32中,暫存器esp存放著棧底指標,棧是向低位址方向生長,因此esp指向棧頂元素。
堆疊對比(作業系統):
由編譯器自動分配釋放,存放函式的引數值,區域性變數的值等。其。
操作方式類似於資料結構中的棧棧使用的是一級快取,通常都是被呼叫時處於儲存空間中,呼叫完畢立即釋放。
堆(作業系統):
一般由程式設計師分配釋放,若程式設計師不釋放,程式結束時可能由os**,分配方式倒是類似於連結串列。
堆則是存放在二級快取中,生命週期由虛擬機器的垃圾**演算法來決定(並不是一旦成為孤兒物件就能被**)。所以呼叫這些物件的速度要相對來得低一些。
堆(資料結構)
堆可以被看成是一棵樹,如:堆排序。
棧(資料結構)
一種後進先出的的資料結構。
具體不同語言有不同的描述,可檢視各種語言的api
堆疊的功能,操作過程和特點
4樓:小灰馬
堆疊其實是資料結果中的兩個概念 ,是存放資料的方式,堆:順序隨意;棧:後進先出(last-in/first-out)。
要說用處,那就是在寫**的時候,有時資料存取肯定是要有規定的順序的,這個是你自己規定的,然後按照你所寫程式的用處的特點來用堆還是棧還是佇列之類的順序 追問: 程式設計時,為什麼要對堆疊指標sp重新賦值? 回答:
這不是初始化嘛。
堆疊是個特殊的儲存區,主要功能是暫時存放資料和位址,通常用來保護斷點和現場。它的特點是按照先進後出的原則存取資料,這裡的進與出是指進棧與出棧操作。
80c51片內ram的部分單元可以用做堆疊。有乙個8位的堆疊指標暫存器sp,專用於指出當前堆疊頂部是片內ram的哪乙個單元。80c51微控制器系統復位後sp的初值為07h,也就是將從內部ram的08h單元開始堆放資訊。
但是,80c51系列的棧區不是固定的,只要通過軟體改變sp暫存器的值便可更動棧區。為了避開工作暫存器區和位定址區,sp的初值可置為2fh或更大的位址值。如果cpu在操作中要使用兩組工作暫存器,如果不使用位變數,sp的初值至少應為0fh或更大的值;如果使用位變數,sp的初值至少應為2fh或更大的值;keilc51編譯器會自動計算sp的初始設定值,無需程式設計者關心。
5樓:網友
堆疊的作來用是保護現場和恢復源現場。進棧bai指令是用於保護片du內某個單元的。
zhi資料;出棧指令是用於dao恢復片內某個單元的資料。
堆疊資料是「後進先出」的方式,由堆疊指標sp自動跟蹤棧定位址。微控制器堆疊編址採用向上生長方式,即棧底佔用較低位址,棧頂佔用較高位址。
堆疊指令採用直接定址方式。
6樓:網友
功能:保護斷點,保護現場。
操作過程:push出棧,pop入棧,存入/取出資料後,棧頂指標變化。
特點:先進後出,後進先出。
同學,武漢理工的吧?微機原理吧?
什麼是堆疊?堆疊的操作方式有哪兩種?
7樓:倒黴熊
堆疊是一種執行「後進先出」演算法的資料結構。
堆疊就是這樣一種資料結構。它是在記憶體中開闢乙個儲存區域,資料乙個乙個順序地存入(也就是「壓入——push」)這個區域之中。有乙個位址指標總指向最後乙個壓入堆疊的資料所在的資料單元,存放這個位址指標的暫存器就叫做堆疊指示器。
開始放入資料的單元叫做「棧底」。資料乙個乙個地存入,這個過程叫做「壓棧」。在壓棧的過程中,每有乙個資料壓入堆疊,就放在和前乙個單元相連的後面乙個單元中,堆疊指示器中的位址自動加1。
讀取這些資料時,按照堆疊指示器中的位址讀取資料,堆疊指示器中的位址數自動減 1。這個過程叫做「彈出pop」。如此就實現了後進先出的原則。
最基本的操作方式 就是 入棧和出棧。
8樓:否極when泰然
先加後壓,先彈後減。
堆疊操作遵循的原則是
9樓:跑路人
棧的運算遵循(先進後出、後進先出)的原則。
例如從輸入序列abcde中,先將a入棧, 然後接下來是要想辦法讓e先入棧。
首先,將b、c、d、e依次入棧, 這時候棧的輸出序列數e、d、c、b、a,然後脊絕將e、d、c、b依次出棧, 現在輸入的序列就是e、d、c、b (這裡利用了棧的特點: 輸入的序列經過了入棧出棧後,序列的次序會顛倒), 最後e、d、c、b依次入棧, 這時候,輸出序列就是b、c、d、e、a。
在釀酒過程中的 酒麴 有什麼作用
含有酵母菌,酵母菌有氧呼吸繁殖,密封時無氧呼吸就可以產生酒精了。釀酒需要酒麴。原始的酒麴是發黴或發芽的穀物,人們加以改良,就製成了適於釀酒的酒麴。酒麴上生長有大量的微生物,還有微生物所分泌的酶 澱粉酶 糖化酶和蛋白酶等 酶具有生物催化作用,可以加速將穀物中的澱粉 蛋白質等轉變成糖 氨基酸等物質。這些...
蠶豆的子葉在種子萌發過程中的作用是什麼
蠶豆的子葉在種子萌發過程中的作用是提供養料。子葉是種子植物胚的組成部分之一,可以貯藏養料或幼苗時期進行同化作用。在蠶豆這種雙子葉植物內,子葉特別肥厚,貯藏著大量的營養物質。蠶豆種子萌發時,胚根先突出種皮,向下生長,形成主根,由於上胚軸的伸長,胚芽不久就被推出土面,而下胚軸的伸長不大,所以子葉不會被推...
在馬的進化過程中的變化起到了重要作用
經過學者們的多年研究,馬的進化過程大致如下 馬的祖先是生活在5500多萬年前新生代 第三紀 始新世的始 祖 馬 它們的身體只有狐狸那麼大 前足4趾著地,後足3趾著地 大約過了1000多萬年,到漸新世時才出現了中馬 體大如羊 前後足均有3趾,中趾明顯增大 又過了1000多萬年到中新世時出現了草原古馬 ...