用兩個棧實現乙個佇列的功能

2021-06-26 09:02:07 字數 878 閱讀 4063

參考:

方法:入隊時,將元素壓入s1。

出隊時,判斷s2是否為空,如不為空,則直接彈出頂元素;如為空,則將s1的元素逐個「倒入」s2,把最後乙個元素彈出並出隊。

**:

#include#includeclass queue

int dequeue()

move(m_first,m_second);

int topelement = m_second.top();

m_second.pop();

size--;

return topelement;

} else

return 0;

} int getsize(void)

int top()

move(m_first,m_second);

} return m_second.top();

} int back()

move(m_second, m_first);

} return m_first.top();

} private:

void move(std::stack& vl, std::stack& vr) }

private:

std::stackm_first;

std::stackm_second;

size_t size;

};int main(int argc, char const *argv){

std::cout<< "deque_from_stack:"結果:

用兩個棧實現乙個佇列功能

1 c 實現 include includeusing namespace std 使用兩個堆疊實現佇列 s1 實現入隊,s2 實現出隊 首先,將資料存放在棧s1中,然後將資料push進s2中,再將s2中的資料pop 出佇列 1 如果棧b不為空,直接彈出棧b的資料 2 如果棧b為空,則依次彈出棧a的...

用兩個棧實現乙個佇列 用兩個佇列實現乙個棧

做題之前,我們先來回顧一下 棧和佇列的相同點以及不同點 便於做題時的應用!1.區別與聯絡 相同點 1 棧和佇列都是控制訪問點的線性表 2 棧和佇列都是允許在端點處進行資料的插入和刪除的資料結構 不同點 1 棧遵循 後進先出 lifo 的原則,即只能在該線性表的一頭進行資料的插入和刪除,該位置稱為 棧...

用兩個棧實現乙個佇列,用兩個佇列實現乙個棧

t deletehead 頭部刪除節點 while s1.empty t ret s2.top s2.pop return ret private stacks1 stacks2 問題2 用兩個佇列實現乙個棧 問題分析 用兩個佇列實現乙個棧,刪除時,由於佇列是先進先出的,而棧是後進先出,因此假設現在...