描述
注意空間哦,題目很簡單,設想一個雙堆棧總空間容量為100萬個資料。
現在我進行M次操作,可能是出棧,可能是入棧,希望得到最後2個堆棧的資訊。
-
輸入
-
第一行包含兩個整數N,M,表示堆棧空間大小為N,一共M次操作。
其中N小於100萬。
以下M行每行格式為以下幾種:
LIN X 表示左邊堆棧入棧一個資料X
RIN X 表示右邊堆棧入棧一個資料X
LOUT 表示左邊堆棧出棧
ROUT 表示右邊堆棧出棧
保證資料合法
-
輸出
-
輸出為兩行,分別代表左邊堆棧和右邊堆棧;
第一行為左邊,第二行為右邊;
輸出順序均為從棧底到棧頂輸出。
-
範例輸入
-
3 6
-
LIN 1
-
RIN 2
-
LIN 3
-
ROUT
-
LOUT
-
RIN 5
-
範例輸出
-
1
-
5
類比題,棧的拓展
#include <stdio.h>char a[500001];char b[500001];long n,m;main(){char t,tt;int upset;int up1,up2;int i;scanf("%ld %ld",&n,&m);up1=up2=0;while(m--){getchar();scanf("%c%c",&t,&tt);if(t=='L'&&tt=='I'){scanf("%c%c",&t,&tt);scanf("%d",&upset);a[up1++]=upset+'0';}if(t=='L'&&tt=='O'){scanf("%c%c",&t,&tt);up1--;}if(t=='R'&&tt=='I'){scanf("%c%c",&t,&tt);scanf("%d",&upset);b[up2++]=upset+'0';}if(t=='R'&&tt=='O'){scanf("%c%c",&t,&tt);up2--;}}for(i=0;i<up1;i++)printf("%c ",a[i]);printf("\n");for(i=0;i<up2;i++)printf("%c ",b[i]);printf("\n");}