棧:後進先出,只可插入或取出棧頂元素
佇列:先進先出,只可取出隊首元素,插入隊尾元素
棧和佇列的實現很相似,兩種資料結構是否可以互相轉換?
答案是肯定的,棧與佇列相互轉換可以加深棧與佇列的理解
用棧實現佇列—>用後進先出實現先進先出
方案:利用兩次後進先出(棧)即可實現先進先出(佇列)
比較簡單,直接看圖應該就可以看懂如何實現,如圖:
stack->queue
用佇列實現棧—>用先進先出實現後進先出
方案:利用兩次先進先出(佇列)實現後進先出(棧)
1 需要兩個佇列,兩個佇列指標,初始:佇列指標(out)指向佇列1,佇列指標(in)指向佇列2
2 首先資料元素全部進入佇列out
3 需要彈出乙個元素,佇列out中n-1個資料進入佇列in,將佇列out的元素出隊
4 in 與 out 交換指向佇列
需要彈出元素 重複 2-4步驟
如圖:
queue->stack
stack 容器與 queue 容器入門
歡迎前往我的個人部落格閱讀原文。學習了五種常用的容器,還剩下 stack 堆疊容器和 queue 佇列容器沒有學習。今天就來學習這兩種容器。stack 堆疊是乙個後進先出 last in first out,lifo 的線性表,插入和刪除元素都只能在表的一端進行。插入元素的一端稱為棧頂 stack ...
stack用法,queue用法,
stack stack 模板類的定義在標頭檔案中。stack 模板類需要兩個模板引數,乙個是元素型別,乙個容器型別,但只有元素型別是必要 的,在不指定容器型別時,預設的容器型別為deque。定義stack 物件的示例 如下 stack s1 stack s2 stack 的基本操作有 入棧,如例 s...
stack用法,queue用法,
stack stack 模板類的定義在標頭檔案中。stack 模板類需要兩個模板引數,乙個是元素型別,乙個容器型別,但只有元素型別是必要 的,在不指定容器型別時,預設的容器型別為deque。定義stack 物件的示例 如下 stack s1 stack s2 stack 的基本操作有 入棧,如例 s...