佇列和棧是兩種不同的資料結構。它們有以下本質區別:
2、操作的限定不同。佇列是在隊尾入隊,隊頭出隊,即兩邊都可操作。而棧的進棧和出棧都是在棧頂進行的,無法對棧底直接進行操作。
3、操作的規則不同。佇列是先進先出(FIFO),即佇列的修改是依先進先出的原則進行的。新來的成員總是加入隊尾(不能從中間插入),每次離開的成員總是佇列頭上(不允許中途離隊)。而棧為後進先出(LIFO),即每次刪除(出棧)的總是當前棧中最新的元素,即最後插入(進棧)的元素,而最先插入的被放在棧的底部,要到最後才能刪除。
4、遍歷資料速度不同。佇列是基於地址指標進行遍歷,而且可以從頭部或者尾部進行遍歷,但不能同時遍歷,無需開闢空間,因為在遍歷的過程中不影響資料結構,所以遍歷速度要快。棧是隻能從頂部取資料,也就是說最先進入棧底的,需要遍歷整個棧才能取出來,而且在遍歷資料的同時需要為資料開闢臨時空間,保持資料在遍歷前的一致性。擴充套件資料:1、堆疊的儲存方式:堆疊是一個特定的儲存區或暫存器,它的一端是固定的,另一端是浮動的 [1] 。對這個儲存區存入的資料,是一種特殊的資料結構。所有的資料存入或取出,只能在浮動的一端(稱棧頂)進行,嚴格按照“先進後出”的原則存取,位於其中間的元素,必須在其棧上部(後進棧者)諸元素逐個移出後才能取出。在記憶體儲器(隨機儲存器)中開闢一個區域作為堆疊,叫軟體堆疊;用暫存器構成的堆疊,叫硬體堆疊。微控制器應用中,堆疊是個特殊儲存區,堆疊屬於RAM空間的一部分,堆疊用於函式呼叫、中斷切換時儲存和恢復現場資料。堆疊中的物體具有一個特性:第一個放入堆疊中的物體總是被最後拿出來, 這個特性通常稱為先進後出 (FILO—First-In/Last-Out)。 堆疊中定義了一些操作, 兩個最重要的是PUSH和POP。 PUSH(入棧)操作:堆疊指標(SP)加1,然後在堆疊的頂部加入一 個元素。POP(出棧)操作相反,出棧則先將SP所指示的內部ram單元中內容送入直接地址定址的單元中(目的位置),然後再將堆疊指標(SP)減1。這兩種操作實現了資料項的插入和刪除。2、佇列的儲存方式:佇列是一種特殊的線性表,特殊之處在於它只允許在表的前端(front)進行刪除操作,而在表的後端(rear)進行插入操作,和棧一樣,佇列是一種操作受限制的線性表。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。佇列中沒有元素時,稱為空佇列。佇列的資料元素又稱為佇列元素。在佇列中插入一個佇列元素稱為入隊,從佇列中刪除一個佇列元素稱為出隊。因為佇列只允許在一端插入,在另一端刪除,所以只有最早進入佇列的元素才能最先從佇列中刪除,故佇列又稱為先進先出(FIFO—first in first out)線性表。
佇列和棧是兩種不同的資料結構。它們有以下本質區別:
2、操作的限定不同。佇列是在隊尾入隊,隊頭出隊,即兩邊都可操作。而棧的進棧和出棧都是在棧頂進行的,無法對棧底直接進行操作。
3、操作的規則不同。佇列是先進先出(FIFO),即佇列的修改是依先進先出的原則進行的。新來的成員總是加入隊尾(不能從中間插入),每次離開的成員總是佇列頭上(不允許中途離隊)。而棧為後進先出(LIFO),即每次刪除(出棧)的總是當前棧中最新的元素,即最後插入(進棧)的元素,而最先插入的被放在棧的底部,要到最後才能刪除。
4、遍歷資料速度不同。佇列是基於地址指標進行遍歷,而且可以從頭部或者尾部進行遍歷,但不能同時遍歷,無需開闢空間,因為在遍歷的過程中不影響資料結構,所以遍歷速度要快。棧是隻能從頂部取資料,也就是說最先進入棧底的,需要遍歷整個棧才能取出來,而且在遍歷資料的同時需要為資料開闢臨時空間,保持資料在遍歷前的一致性。擴充套件資料:1、堆疊的儲存方式:堆疊是一個特定的儲存區或暫存器,它的一端是固定的,另一端是浮動的 [1] 。對這個儲存區存入的資料,是一種特殊的資料結構。所有的資料存入或取出,只能在浮動的一端(稱棧頂)進行,嚴格按照“先進後出”的原則存取,位於其中間的元素,必須在其棧上部(後進棧者)諸元素逐個移出後才能取出。在記憶體儲器(隨機儲存器)中開闢一個區域作為堆疊,叫軟體堆疊;用暫存器構成的堆疊,叫硬體堆疊。微控制器應用中,堆疊是個特殊儲存區,堆疊屬於RAM空間的一部分,堆疊用於函式呼叫、中斷切換時儲存和恢復現場資料。堆疊中的物體具有一個特性:第一個放入堆疊中的物體總是被最後拿出來, 這個特性通常稱為先進後出 (FILO—First-In/Last-Out)。 堆疊中定義了一些操作, 兩個最重要的是PUSH和POP。 PUSH(入棧)操作:堆疊指標(SP)加1,然後在堆疊的頂部加入一 個元素。POP(出棧)操作相反,出棧則先將SP所指示的內部ram單元中內容送入直接地址定址的單元中(目的位置),然後再將堆疊指標(SP)減1。這兩種操作實現了資料項的插入和刪除。2、佇列的儲存方式:佇列是一種特殊的線性表,特殊之處在於它只允許在表的前端(front)進行刪除操作,而在表的後端(rear)進行插入操作,和棧一樣,佇列是一種操作受限制的線性表。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。佇列中沒有元素時,稱為空佇列。佇列的資料元素又稱為佇列元素。在佇列中插入一個佇列元素稱為入隊,從佇列中刪除一個佇列元素稱為出隊。因為佇列只允許在一端插入,在另一端刪除,所以只有最早進入佇列的元素才能最先從佇列中刪除,故佇列又稱為先進先出(FIFO—first in first out)線性表。