首頁  >  文章  >  Java  >  java中棧和佇列的區別

java中棧和佇列的區別

(*-*)浩
(*-*)浩原創
2019-11-14 10:55:033086瀏覽

java中棧和佇列的區別

#堆疊:

堆疊(stack)又稱為堆疊,它是一種運算受限的線性表。其限制是僅允許在表的一端進行插入和刪除運算。這一端稱為棧頂,相對地,將另一端稱為棧底。 (推薦學習:java課程

堆疊(Stack)是作業系統在建立某個行程時或執行緒(在支援多執行緒的作業系統中是執行緒)為這個執行緒建立的儲存區域,該區域    具有FIFO的特性,在編譯的時候可以指定需要的Stack的大小。

隊列

隊列是一種特殊的線性表,特殊之處在於它只允許在表的前端(front)進行刪除操作,而在表的後端(rear)進行插入操作,和堆疊一樣,佇列是一種操作受限的線性表。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。

佇列中沒有元素時,稱為空隊列。

建立順序佇列結構必須為其靜態分配或動態申請一片連續的儲存空間,並設定兩個指標進行管理。一個是隊頭指針front,它指向隊頭元素;另一個是隊尾指針rear,它指向下一個入隊元素的存儲位置。

佇列採用的FIFO(first in first out),新元素(等待進入佇列的元素)總是被插入到鍊錶的尾部,而讀取的時候總是從鍊錶的頭部開始讀取。每次讀取一個元素,釋放一個元素。所謂的動態創建,動態釋放。

因而也不存在溢出等問題。由於鍊錶由結構體間接而成,遍歷也方便。 (先進先出)

區別:

堆疊就是一個桶,後放進去的先拿出來,它下面本來有的東西要等它出來之後才能出來。 (後進先出)

佇列只能在隊頭做刪除操作,在隊尾做插入操作,而堆疊只能在堆疊頂部做插入和刪除操作。 (先進先出)

以上是java中棧和佇列的區別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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