題目1512 用兩個棧實現佇列

2021-06-22 17:51:42 字數 915 閱讀 5557

題目描述:用兩個棧來實現乙個佇列,完成佇列的push和pop操作。

佇列中的元素為int型別。

輸入:每個輸入檔案包含乙個測試樣例。

對於每個測試樣例,第一行輸入乙個n(1<=n<=100000),代表佇列操作的個數。

接下來的n行,每行輸入乙個佇列操作:

1. push x 向佇列中push乙個整數x(x>=0)

2. pop 從佇列中pop乙個數。

輸出:對應每個測試案例,列印所有pop操作中從佇列pop中的數字。如果執行pop操作時,隊列為空,則列印-1。

思路

首先宣告兩個棧,stack1:用於入隊;stack2:用於出隊。

當遇到push操作(入隊)時,將x壓進棧stack1;

當遇到pop(出隊)操作時,對棧stack2進行判斷:

若stack2中有值,則列印stack2中棧頂的值並出棧;

若stack2中沒值但stack1中有值,則將stack1中的所有值出棧並將這些值入棧stack2,而後列印stack2中棧頂的值並出棧;

若stack2中沒值且stack1中也沒值,則列印-1;

**:

#include#include#include#define max 100005

int main()

else if(strcmp(opr,"pop") == 0)

else if(top2 == -1 && top1 > -1)

printf("%d\n",stack2[top2]);

top2--;

} else

}} }

}

題目1512 用兩個棧實現佇列

時間限制 1 秒 記憶體限制 128 兆 題目描述 用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。輸入 每個輸入檔案包含乙個測試樣例。對於每個測試樣例,第一行輸入乙個n 1 n 100000 代表佇列操作的個數。接下來的n行,每行輸入乙個佇列操作 1.push x...

九度 1512 用兩個棧實現佇列

時間限制 1 秒 記憶體限制 128 兆 特殊判題 否 提交 1327 解決 492 題目描述 用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。輸入 每個輸入檔案包含乙個測試樣例。對於每個測試樣例,第一行輸入乙個n 1 n 100000 代表佇列操作的個數。接下來的...

題目 用兩個棧實現佇列

用兩個棧實現佇列 解析 佇列的特性是 先進先出 棧的特性是 後進先出 在下面的程式中,模擬實現佇列的兩個函式分別實現佇列尾部插入結點和在佇列頭部刪除結點的功能。具體實現方法和過程,看下面的gif圖 完整 及測試用例 include include using namespace std templa...