首頁  >  文章  >  堆疊的儲存結構是什麼

堆疊的儲存結構是什麼

coldplay.xixi
coldplay.xixi原創
2021-01-11 10:57:3811408瀏覽

堆疊的儲存結構是「線性儲存結構」;堆疊與順序表和鍊錶一樣,是用來儲存邏輯關係為「一對一」資料的線性儲存結構,是一種「特殊」的線性儲存結構,分為順序棧和鏈棧;棧是按照後進先出的原則存儲數據,先進入的數據被壓入棧底,最後的數據在棧頂,需要讀取數據的時候從棧頂開始彈出資料;棧具有記憶作用,對棧的插入與刪除操作中,不需要改變棧底指標。

堆疊的儲存結構是什麼

本文操作環境:Windows7系統,Dell G3電腦。

堆疊的儲存結構:

堆疊同順序表和鍊錶一樣,堆疊也是用來儲存邏輯關聯式為 "一對一" 資料的線性儲存結構。

堆疊的具體實作

堆疊是一種"特殊" 的線性儲存結構,因此堆疊的具體實作有以下兩種方式:

  • 順序堆疊:採用順序儲存結構可以模擬堆疊儲存資料的特點,從而實現堆疊儲存結構;

  • #鏈結堆疊:採用鍊式儲存結構實作堆疊結構;

堆疊儲存結構與先前所學的線性儲存結構有所差異,這緣於堆疊對資料"存" 和"取" 的過程有特殊的要求:

  • #堆疊只能從表的一端存取數據,另一端是封閉的;

  • #在堆疊中,無論是存數據還是取數據,都必須遵循"先進後出"的原則,即最先進棧的元素最後出棧。

  • 通常,堆疊的開口端稱為堆疊頂部;相應地,封口端稱為堆疊底部。因此,棧頂元素指的就是距離棧頂最近的元素。

相關介紹:

要搞清楚這個概念,首先要明白」堆疊「原來的意思,如此才能掌握本質。棧,存放貨物或供旅客住宿的地方,可引申為倉庫、中轉站,所以引入到電腦領域裡,就是指資料暫時存放的地方,所以才有進棧、出棧的說法。

首先,系統或資料結構堆疊中資料內容的讀取與插入(壓入)push和 彈出pop是兩回事。壓入是增加數據,彈出是刪除數據 ,這些操作只能從棧頂即最低地址作為約束的接口界面入手操作 ,但讀取棧中的數據是隨便的,沒有接口約束之說。很多人誤解這個理念從而對棧產生困惑。而係統棧在電腦體系結構中又起到一個跨部件交互的媒介區域的作用即cpu 與內存的交流通道,cpu只從系統給我們自己編寫的應用程序所規定的棧入口線性地讀取執行指令, 用一個形象的字來形容它就是pipeline(管道線、流水線)。 cpu內部交互作用詳見 EU與BIU的概念介紹。

堆疊作為一種資料結構,是一種只能在一端進行插入和刪除操作的特殊線性表。它按照後進先出的原則儲存數據,先進入的數據被壓入棧底,最後的數據在棧頂,需要讀取數據的時候從棧頂開始彈出數據(最後一個數據被第一個讀出來)。棧具有記憶作用,對棧的插入與刪除操作中,不需要改變棧底指標。

堆疊是允許在同一端進行插入和刪除操作的特殊線性表。允許插入和刪除操作的一端稱為棧頂(top),另一端為棧底(bottom);棧底固定,而棧頂浮動;棧中元素個數為零時稱為空棧。插入一般稱為進棧(PUSH),刪除則稱為退棧(POP)。棧也稱為先進後出表。

堆疊可以用來在函數呼叫的時候儲存斷點,做遞歸時要用到堆疊。

以上定義是在經典電腦科學中的解釋。

相關免費學習推薦:php程式設計(影片)

#

以上是堆疊的儲存結構是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn