首页
/
每日頭條
/
圖文
/
世界上公認的計算機誕生在哪個年代
世界上公認的計算機誕生在哪個年代
更新时间:2026-05-19 05:01:52

如果你學過數據結構,就一定會遇到“堆”,"棧","堆棧",這些對于小白來說有些頭大,下面就來科普一下何謂堆棧?

按照WIKI的定義:

堆棧(英語:stack),是計算機科學中一種特殊的串列形式的抽象數據類型,其特殊之處在于隻能允許在鍊表或數組的一端(稱為堆棧頂端指針,英語:top)進行加入數據(英語:push)和輸出數據(英語:pop)的運算。另外堆棧也可以用一維數組或鍊表的形式來完成。堆棧的另外一個相對的操作方式稱為隊列。需要記住的是,堆:順序随意,棧:後進先出(Last-In/First-Out)。

世界上公認的計算機誕生在哪個年代(計算機世界裡的)1

這裡的pop和push到都是什麼意思?其實這是堆棧數據結構使用兩種基本操作:推入(壓棧,push)和彈出(彈棧,pop):

推入:将數據放入堆棧的頂端(數組形式或串列形式),堆棧頂端top指針加一。

彈出:将頂端數據數據輸出(回傳),堆棧頂端數據減一。

世界上公認的計算機誕生在哪個年代(計算機世界裡的)2

如要了解堆棧,應将之拆開分析。

的概念:

堆(英語:Heap)是計算機科學中的一種特别的樹狀數據結構。通常是一個可以被看做一棵樹的數組對象。若是滿足以下特性,即可稱為堆:“給定堆中任意節點 P 和 C,若 P 是 C 的父節點,那麼 P 的值會小于等于(或大于等于) C 的值”。若父節點的值恒小于等于子節點的值,此堆稱為最小堆(英語:min heap);反之,若父節點的值恒大于等于子節點的值,此堆稱為最大堆(英語:max heap)。在堆中最頂端的那一個節點,稱作根節點(英語:root node),根節點本身沒有父節點(英語:parent node)。

世界上公認的計算機誕生在哪個年代(計算機世界裡的)3

棧的概念

棧(stack)又名堆棧,它是一種運算受限的線性表。其限制是僅允許在表的一端進行插入和删除運算。這一端被稱為棧頂,相對地,把另一端稱為棧底。棧就是一個桶,後放進去的先拿出來,它下面本來有的東西要等它出來之後才能出來(先進後出)

棧(Stack)是操作系統在建立某個進程時或者線程(在支持多線程的操作系統中是線程)為這個線程建立的存儲區域,該區域具有FIFO的特性,在編譯的時候可以指定需要的Stack的大小。

世界上公認的計算機誕生在哪個年代(計算機世界裡的)4

堆棧

其實堆棧本身就是棧,隻是換了個抽象的名字。其特性是: 最後一個放入堆棧中的物體總是被最先拿出來,這個特性通常稱為後進先出(LIFO)隊列。堆棧中定義了一些操作。 兩個最重要就是上述提到的PUSH和POP。PUSH操作在堆棧的頂部加入一個元素,POP操作相反,在堆棧頂部移去一個元素,并将堆棧的大小減一。

世界上公認的計算機誕生在哪個年代(計算機世界裡的)5

工作原理

對于工作方式你可能還是一頭霧水,以自助餐托盤為例解釋一下,你就會更加明了:

作為堆棧如何工作的一個例子,可以把它看成一個彈簧加載托盤分發器,這種類型經常在自助餐廳中發現。每個托盤上都刻有數字。托盤依次從頂部裝入,每個托盤都放置在已經裝入的托盤上,彈簧進行壓縮,以便在必要時為更多托盤留出空間。例如,在圖中,托盤編号為42、23、2、9,先裝載42個托盤,後裝載9個托盤。

世界上公認的計算機誕生在哪個年代(計算機世界裡的)6

最後一個托盤是9号。因此,“第一個出來”的盤子也是9号。當顧客從托盤堆的頂部取出托盤時,第一個托盤是9号,第二個托盤是2号。然後更多的托盤被添加。這些托盤将不得不在我們裝載第一個托盤之前從堆棧上下來。在托盤堆的任意順序的push和pop出之後,托盤42仍然在底部。隻有在42号托盤從堆棧頂部彈出後,堆棧才會再次清空。

而堆棧通常被放置在機器的最上面的地址區域。它們通常從最高的内存位置增長到較低的内存位置,允許在程序内存末端和堆棧“頂部”之間的内存使用中獲得最大的靈活性。在我們的讨論中,堆棧在内存中是“向上”增長還是“向下”增長基本上是不相關的。堆棧的“top”元素是最後被推入并将首先被彈出的元素。堆棧的“底部”元素在删除時将使堆棧為空。

二者區别

堆是在程序運行時,而不是在程序編譯時,申請某個大小的内存空間。即動态分配内存,對其訪問和對一般内存的訪問沒有區别。它由程序員分配和回收。

棧就是一個桶,後放進去的先拿出來,它下面本來有的東西要等它出來之後才能出來。(後進先出)由系統自動分配和回收。

堆棧緩存方式

棧使用的是一級緩存, 他們通常都是被調用時處于存儲空間中,調用完畢立即釋放。

堆則是存放在二級緩存中,生命周期由虛拟機的垃圾回收算法來決定(并不是一旦成為孤兒對象就能被回收)。所以調用這些對象的速度要相對來得低一些。棧的優勢是,存取速度比堆要快,僅次于直接位于CPU中的寄存器。

棧:在Windows下,棧是向低地址擴展的數據結構,是一塊連續的内存的區域。意思是棧頂的地址和棧的最大容量是系統預先規定好的,在 WINDOWS下,棧的大小是2M(也有的說是1M,總之是一個編譯時就确定的常數),如果申請的空間超過棧的剩餘空間時,将提示overflow。因此,能從棧獲得的空間較小。

堆:堆是向高地址擴展的數據結構,是不連續的内存區域。這是由于系統是用鍊表來存儲的空閑内存地址的,自然是不連續的,而鍊表的遍曆方向是由低地址向高地址。堆的大小受限于計算機系統中有效的虛拟内存。由此可見,堆獲得的空間比較靈活,也比較大。

作為“堆”的數據空間,必須是靈活的,因為成千上萬的程序員在寫什麼程序是未知的。但可知道的一點,就是他們是跑在确定的某個OS裡面的。因此,也不過就是給系統管理的數據空間起了個名字,叫棧;給程序員使用的空間,起了個名,叫堆。

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
推荐阅读
懷念ag 老成員(AG雜志樂手專訪來自納什維爾的作曲人兼樂手Darrell)
懷念ag 老成員(AG雜志樂手專訪來自納什維爾的作曲人兼樂手Darrell)
  在看到 4 個月的比利牛斯犬 Angus 和活 潑的澳大利亞牧羊犬 Miller 之後,就知 道快到 Darrell Scott 的家了,兩隻狗狗會在 石子路上蹦蹦跳跳,伸出舌頭,搖着尾巴。它 們本是用來看護羊群,免受納什維爾東部 100 公裡之外在坎伯蘭高原林區的山上四處覓食的 土狼和野豬的侵擾,不過不論何時,隻要有人來, 它們都會非常高興。小狗會馬上...
2026-05-19
殺顔真卿最兇的人是誰(博物雜志編輯居然稱)
殺顔真卿最兇的人是誰(博物雜志編輯居然稱)
  【博物雜志編輯居然稱“看顔杲卿被殺很過瘾” 結果被停職處理】博物雜志編輯稱,“小時候看顔杲卿被殺的故事覺得很過瘾。”言論近日引起網民輿論。北京時間15日下午,“博物雜志”也在微博公布針對董子凡的處理意見,稱已經嚴厲批評,董子凡将停職反省。      版權聲明:如涉及版權問題,請作者持權屬證明與本網聯系   ,
2026-05-19
将士為什麼跟着安祿山謀反(安祿山怒責顔杲卿背叛)
将士為什麼跟着安祿山謀反(安祿山怒責顔杲卿背叛)
  唐鸩(之五)   常山失守之後,顔杲卿和袁履謙被叛軍押往洛陽,安祿山斥責顔杲卿道:“你從前隻是範陽一個戶曹,因為我的舉薦,幾年之間做到了太守,你為什麼還要背叛我?”   顔杲卿罵道:“你本是一個放羊的羯奴,皇上提拔你做了三道節度使,恩幸無比,你為什麼謀反?我家世代為唐臣,食唐俸祿,從前受過你的保薦,難道就要和你一起謀反?我是為國讨賊,隻恨沒能殺了你,哪來...
2026-05-19
養老生活别提有多舒心(養老生活越過越甜)
養老生活别提有多舒心(養老生活越過越甜)
     9月19日,鄭州市金水區梓聞社會工作服務中心的社工陪伴老人練習書法。本報記者 王铮 攝   □本報記者 王向前   今年10月1日,《河南省養老服務條例》(以下簡稱《條例》)将施行。為貫徹實施好《條例》,9月23日,省政府新聞辦舉行新聞發布會,發布河南養老服務發展願景。   疏通“堵點”,《條例》肩負重大責任   我省60歲以上人口1796萬人,占...
2026-05-19
六個堅持專家解讀(董振華從六個堅持)
六個堅持專家解讀(董振華從六個堅持)
  從“六個堅持”牢牢把握新時代中國特色社會主義思想的世界觀和方法論   董振華   〔中共中央黨校(國家行政學院)哲學教研部副主任、教授〕   黨的二十大報告指出:“中國共産黨為什麼能,中國特色社會主義為什麼好,歸根到底是馬克思主義行,是中國化時代化的馬克思主義行。擁有馬克思主義科學理論指導是我們黨堅定信仰信念、把握曆史主動的根本所在。”“推進馬克思主義中...
2026-05-19
Copyright 2023-2026 - www.tftnews.com All Rights Reserved