1樓:匿名使用者
資料結構中的堆實質上是滿足一定性質的完全二叉樹:二叉樹中任一非葉子結點關鍵字的值均小於(大於)它的孩子結點的關鍵字。在小根堆中,第乙個元素(完全二叉樹的根結點)的關鍵字最小;大根堆中,第乙個元素(完全二叉樹的根結點)的關鍵字最大,顯然,堆中任一子樹仍是乙個堆。
滿二叉樹:(1)任乙個非葉子結點均有兩個孩子 (2)對於二叉樹的任一層,若該層上有乙個結點有孩子,則該層上每乙個結點均有孩子。
完全二叉樹:滿二叉樹的最下層從右往左連續地刪除若干葉子結點所得到的二叉樹。
資料結構中的棧(又名堆疊),指的是乙個後進先出(last in first out)的線性表,有順序棧、鏈棧。
j**a堆疊內在如何理解
2樓:網友
1、存取速度比堆快。
2、基本資料型別的值和引用值存在棧記憶體中,物件存在堆中。
3、棧的特性,先進後出。
3樓:網友
我的理解是乙個揹簍,拿來裝白菜。
後防進去的白菜先拿出來。
微控制器程式設計裡面,堆疊怎麼理解
4樓:匿名使用者
堆疊是乙個區域,是用來存放資料的,這個區域本身沒有任何特殊之處,就是內部ram的一部份,特殊的是它存放和取用資料的方式,即所謂的『先進後出,後進先出』,並且堆疊有特殊的資料傳輸指令,即『push』和『pop』,有乙個特殊的專為其服務的單元,即堆疊指標sp,每當執一次push指令時,sp就(在原來值的基礎上)自動加1,每當執行一次pop指令,sp就(在原來值的基礎上)自動減1。由於sp中的值可以用指令加以改變,所以只要在程式開始階段更改了sp的值,就可以把堆疊設定在規定的記憶體單元中,如在程式開始時,用一條mov sp,#5fh指令,就時把堆疊設定在從記憶體單元60h開始的單元中。一般程式的開頭總有這麼一條設定堆疊指標的指令,因為開機時,sp的初始值為07h,這樣就使堆疊從08h單元開始往後,而08h到1fh這個區域正是8031的第。
二、三、四工作暫存器區,經常要被使用,這會造成資料的混亂。不同作者編寫程式時,初始化堆疊指令也不完全相同,這是作者的習慣問題。當設定好堆疊區後,並不意味著該區域成為一種專用記憶體,它還是可以象普通記憶體區域一樣使用,只是一般情況下程式設計者不會把它當成普通記憶體用了。
貢獻文件:文庫《吳鑑鷹微控制器專案實戰精講》
5樓:乙隻宅豆
在片內ram中,常常要指定乙個專門的區域來存放某些特別的資料,它遵循順序存取和後進先出(lifo/filo)的原則,這個ram區叫堆疊。
子程式呼叫和中斷服務時cpu自動將當前pc值壓棧儲存,返回時自動將pc值彈棧;
保護現場/恢復現場;
資料傳輸。
6樓:那紅犬艾
就是存放資料的東西。
堆疊的特點是什麼?
7樓:雲南萬通汽車學校
棧(stack)在電腦科學中是限定僅在表尾進行插入或刪除操作的線形表。
棧是一種資料結構,它按照先進後出的原則儲存資料,先進入的資料被壓入棧底,最後的資料在棧頂,需要讀資料的時候從棧頂開始彈出資料(最後乙個資料被第乙個讀出來)。
棧是只能在某一端插入和刪除的特殊線性表。用桶堆積物品,先堆進來的壓在底下,隨後一件一件往堆。取走時,只能從上面一件一件取。堆和取都在頂部進行,底部一般是不動的。
棧就是一種類似桶堆積物品的資料結構,進行刪除和插入的一端稱棧頂,另一堆稱棧底。插入一般稱為進棧(push),刪除則稱為退棧(pop)。 棧也稱為後進先出表(lifo表)。
1、進棧(push)演算法。
若top≥n時,則給出溢位資訊,作出錯處理(進棧前首先檢查棧是否已滿,滿則溢位;不滿則作②);
置top=top+1(棧指標加1,指向進棧位址);
s(top)=x,結束(x為新進棧的元素);
2、退棧(pop)演算法。
若top≤0,則給出下溢資訊,作出錯處理(退棧前先檢查是否已為空棧, 空則下溢;不空則作②);
x=s(sop),(退棧後的元素賦給x);
top=top-1,結束(棧指標減1,指向棧頂)。
8樓:匿名使用者
堆疊是一種執行「後進先出」演算法的資料結構。
堆疊就是這樣一種資料結構。它是在記憶體中開闢乙個儲存區域,資料乙個乙個順序地存入(也就是「壓入——push」)這個區域之中。有乙個位址指標總指向最後乙個壓入堆疊的資料所在的資料單元,存放這個位址指標的暫存器就叫做堆疊指示器。
開始放入資料的單元叫做「棧底」。資料乙個乙個地存入,這個過程叫做「壓棧」。在壓棧的過程中,每有乙個資料壓入堆疊,就放在和前乙個單元相連的後面乙個單元中,堆疊指示器中的位址自動加1。
讀取這些資料時,按照堆疊指示器中的位址讀取資料,堆疊指示器中的位址數自動減 1。這個過程叫做「彈出pop」。如此就實現了後進先出的原則。
堆疊機 如何理解?
9樓:華全動力集團
堆疊機介紹:
堆疊機器,電腦科學中一種計算模型。這種型別的電腦,記憶體以堆疊儲存。
中文名 堆疊機器 外文名 stack machine 又 稱堆疊機器實 質電腦科學中一種計算模型這種機器,它的指令集中包含了零位址指令。硬體在執行運算時,到堆疊的頂端去取出運算元,至運算結束時,再儲存到堆疊的頂端。
相較於累加器 ,和暫存器機,用零位址指令實作的堆疊機器,它的好處是程式碼密度相對較大,因此,它的程式通常較小。
新式與老式的堆疊機主要不同為容量更大,更高速的專用的堆疊記憶體的效率。老式的結構直接系統記憶體,而新的堆疊機使用專用或直接整合的專用堆疊記憶體。這些堆疊記憶體使那些中斷處理和任務切換子程式呼叫**更長、數量更多。
特性加在一起,構成了乙個運算高速,體系靈巧,結構簡單的計算機系統。
關於微控制器堆疊指標sp變化的問題
為什麼不是 sp 4fh 應該是4fh。問題二 那50h豈不是沒利用到?50h是不用的。復位後,sp 07h。但是,07h就從來不用於堆疊。第一次壓棧,是壓入了08h單元。第一個問題得實驗一下才知道,按說是先彈出來送到sp中後,sp減1 第二個問題是先加一再進棧,50h作為棧底一直不用。微控制器復位...
如何根據需要定義堆疊段的大小?
堆疊的定義是這樣的 dssg segment stack aa dw dup dssg ends 一般的說,當push pop指令不頻繁時用系統堆疊就可以了,但是當需要堆疊儲存大量資料,如作為子程式傳替引數時就要定義乙個堆疊,而且一般來說乙個段的內容不能超過k,因為偏移位址最大隻能表示k,所以定義的...
GDB除錯怎麼樣檢視堆疊資訊
使用gdb還有什麼高階使用的方法麼?請賜教 q 在gdb裡可以用help xx多用用就熟悉了。嵌入式gdb除錯 檢視堆疊內容一直提示這個,求解 感覺沒有壓棧,堆疊無內容。設定斷點之後再檢視,試試。是不是還沒跑函式,還沒有壓棧。c語言gdb怎麼看區域性變數棧的使用情況 主要看題中的變數 區域性變數以及靜態...