更新時間:2022-07-07 11:08:36 來源:動力節點 瀏覽1304次
Stack和Queue的主要區別在于stack 是LIFO類型,而Queue是FIFO類型的數據結構。LIFO代表后進先出,即如果我們將數據放入堆棧,那么最后一個條目將首先被處理。雖然FIFO代表先進先出,但它意味著隊列中的第一個條目將被首先處理。
堆 | 隊列 |
---|---|
僅允許在一端插入或刪除元素的線性列表稱為堆棧 |
允許在一端插入并在另一端刪除的線性列表稱為隊列 |
由于元素的插入和刪除是在堆棧的一端執行的,因此只能以相反的插入順序刪除元素。 |
由于一個元素的插入和刪除是在隊列的另一端進行的,所以只能按照插入的相同順序刪除元素。 |
堆棧稱為后進先出 (LIFO)列表 |
隊列稱為先進先出 (FIFO)列表。 |
最多和最少可訪問的元素被稱為堆棧的頂部和底部 |
元素的插入在 FRONT 端執行,從REAR端執行刪除 |
示例:堆棧正在將盤子一層一層地排列。 |
示例:臨時商店中的普通隊列。 |
插入操作稱為PUSH,刪除操作稱為POP |
插入操作稱為ENQUEUE,刪除操作稱為QUEUE |
任何語言的函數調用都使用 Stack |
操作系統的任務調度使用隊列 |
要檢查堆棧是否為空,使用以下條件: TOP == -1 |
要檢查隊列是否為空,使用以下條件: FRONT == -1 || 前 == 后 + 1 |
要檢查堆棧是否已滿,使用以下條件: TOP == MAX – 1 |
要檢查隊列是否已滿,使用以下條件: REAR == MAX – 1 |
Stack 只需要一個引用指針。 |
一個隊列需要兩個引用指針。 |
檢查堆棧是否為空的條件:
int isEmpty ()
{
如果(頂部==-1 )
返回1;
否則返回0;
}
檢查堆棧是否已滿的條件
int isFull ()
{
如果(頂部==MAX-1 )
返回1;
別的
返回0;
}
檢查隊列是否為空的條件:
int isEmpty ()
{
如果(前==-1 || 前==后+1 )
返回1;
別的
返回0;
}
檢查隊列是否已滿的條件:
int isFull ()
{
如果(后==MAX-1 )
返回1;
別的
返回0;
}
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習