用棧實現佇列 用佇列實現棧

2021-08-27 10:01:47 字數 1274 閱讀 2754

棧的特點:filo(firstinlastout)

僅能從棧頂插入,刪除元素。

最基本的介面包括push()

——從棧頂壓入元素

,pop()

——從棧頂彈出元素

佇列的特點:fifo(firstinfirstout)

僅能從隊頭刪除元素,從隊尾插入元素。

最基本的介面包括enque()

——從隊尾插入元素

,deque()

——從隊頭刪除元素

思路:新入佇列的元素壓入stack1

中,當元素出佇列時,若

stack2

為空,則將

stack1

的全部元素依次彈出,壓入

stack2

中,這樣

stack2

的棧頂元素即為隊頭元素。

templateclass myqueue

;templatevoid myqueue::move(std::stack& from, std::stack& to) }

}templatet myqueue::front()

return ele;

}templatet myqueue::back()

return ele;

}templatevoid myqueue::enque(const t& ele)

templatevoid myqueue::deque()

}

思路:新元素入棧時,若兩個佇列都為空,向任意乙個佇列隊尾插入元素,否則向其中乙個非空佇列插入元素。棧彈出元素時,將非空佇列的元素依次刪除,

插入另乙個空佇列,只留下隊尾元素(

此即棧頂元素

),彈出棧頂即從佇列中刪除此元素。

templateclass mystack

;templatet mystack::top()

else if (!queue1.empty() && queue2.empty())

return ele;

}templatevoid mystack::push(const t& ele)

else if (queue2.empty()) }

templatevoid mystack::pop()

if (!queue2.empty())

}else if (queue2.empty())

if (!queue1.empty())

}}

用棧實現佇列,用佇列實現棧。好玩!!!

因為在資料結構中,棧和佇列長得實在是太像了,將他們拿來比較是不可避免的,棧 後進先出,而佇列 先進先出。同樣是只能在一端進行操作,那麼問題來了,能相互實現?能不能得好好分析一下嘛,如果是用兩個棧來實現佇列,好像這操作可以哦。一下,你就明白!顯然用兩個棧可以實現佇列的功能,就是借助另乙個棧來中轉一下,...

232 用棧實現佇列 225 用佇列實現棧

用棧實現佇列 佇列是先進先出,實現佇列的最直觀的方法是用鍊錶。但本題是要求使用棧。本題兩個stack相互倒,負負得正 class myqueue def init self self.instack self.outstack defpush self,x def pop self if len s...

用棧實現佇列

正如標題所述,你需要使用兩個棧來實現佇列的一些操作。佇列應支援push element pop 和 top 其中pop是彈出佇列中的第乙個 最前面的 元素。pop和top方法都應該返回第乙個元素的值。public class solution public void push int element...