程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 九度_題目1512:用兩個棧實現隊列

九度_題目1512:用兩個棧實現隊列

編輯:C++入門知識

九度_題目1512:用兩個棧實現隊列


這個思路實在太難想了。。。。

/*
 *str為PUSH,通過s1.push()使元素入棧;
 *str為POP時,s2非空,輸出棧頂元素,s2.pop()彈出棧頂元素;若s2彈出元素後為空且s1不空,將s1中所有元素push進s2;
 *str為POP時,s2為空,若s1不空,將s1中所有元素push進s2,最後輸出棧頂元素並通過s2.pop()彈出棧頂元素;
 */
題目描述:用兩個棧來實現一個隊列,完成隊列的Push和Pop操作。
隊列中的元素為int類型。
輸入:
每個輸入文件包含一個測試樣例。
對於每個測試樣例,第一行輸入一個n(1<=n<=100000),代表隊列操作的個數。
接下來的n行,每行輸入一個隊列操作:
1. PUSH X 向隊列中push一個整數x(x>=0)
2. POP 從隊列中pop一個數。
輸出:
對應每個測試案例,打印所有pop操作中從隊列pop中的數字。如果執行pop操作時,隊列為空,則打印-1。
樣例輸入:
3
PUSH 10
POP
POP
樣例輸出:
10
-1
#include
#include
#include
using namespace std;
/*
 *str為PUSH,s1.push();
 *str為POP時,s2非空,輸出棧頂元素s2.pop();若s2彈出元素後為空,若s1不空,將s1中所有元素push進s2;
 *str為POP時,s2為空,若s1不空,將s1中所有元素push進s2,最後輸出棧頂元素;
 */
int main()
{
    int n;
    while(cin>>n)
    {
            stacks1,s2;
            int num;
            string str;
        for(int i=0;i>str;
            if(str=="PUSH")
        {
            cin>>num;
            s1.push(num);
        }else if(str=="POP")
        {
            if(!s2.empty())
            {
                cout<

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved