題目描述:用兩個棧來實現乙個佇列,完成佇列的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
poppop
10-1
#include#include#include#includetypedef struct node
node,*pnode;
typedef struct stack
stack,*pstack;
/*建立乙個空棧,並返回指向該棧的指標*/
pstack createstack()
return ps;
}/*判斷該棧是否為空 */
bool isempty(pstack ps)
/*向ps指標指向的棧中壓入資料val*/
void pushstack(pstack ps,int val)
return;
}/*從棧中退出資料,並將資料的儲存在pdata指標指向的位置*/
bool popstack(pstack ps,int* pdata)
}/*清空棧,即將其還原為空棧*/
void clearstack(pstack ps)
ps->ptop=ps->pbottom; }}
/*用兩個棧模擬入隊*/
void enterqueue(pstack ps,int val)
/*用兩個棧模擬出對*/
bool deletequeue(pstack ps1,pstack ps2,int *pdata)
popstack(ps2,pdata);
} return true;
}int main()
if(strcmp(input,pop)==0)
} clearstack(ps1);
clearstack(ps2);
return 0;
}
結果:
兩個棧實現佇列 兩個佇列實現棧
1.兩個棧實現佇列 大致思路 入佇列時,將元素入棧s1,出佇列時,將s2中的元素出棧即可,如果s2為空,那麼將s1中 s1.size 1 個元素出棧,加入到s2中,然後將s1中最後乙個元素出棧,即完成了出佇列的操作 include using namespace std include includ...
兩個棧實現佇列,兩個佇列實現棧
include include include using namespace std 使用兩個棧實現佇列,實現了push,pop,front操作 其中棧s2是輔助棧,push直接在s1中插入 pop從s2中出棧,如果s2是空的,將s1倒進s2,然後再出棧,這樣減少了倒棧次數,比較高效。front就...
兩個棧實現佇列 兩個佇列實現棧
一 題目描述 用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。二 1 自己 基本思路 乙個棧用於壓縮,乙個專門用於彈出。因為棧是先進後出,所有的元素入棧再出棧,再入棧就可以將順序調整過來。但是沒有想到優化。class solution int pop int tem...