点击打开链接
#include<cstdio>
#include<algorithm>
#include<stack>
#include<cstring>
using namespace std;
//typedef struct SNode{
// int num;
// struct SNode * next;
//}*STACK;
//STACK create()
//{
// STACK shead = (STACK)malloc(sizeof(struct SNode));
// shead->next = NULL;
// return shead;
//}
//
//void push(STACK S,int number)
//{
// STACK snew = (STACK)malloc(sizeof(struct SNode));
// snew->num = number;
// snew->next = S->next;
// S->next = snew;
//}
//
//
//int pop(STACK S)
//{
// STACK p;
// int number;
// p = S->next;
// number = p->num;
// S->next = p->next;
// free(p);
// return number;
//}
int main(void)
{
//STACK s1 = create();
// STACK s2 = create();
stack<int> s1;
stack<int> s2;
int n1,n2;
scanf("%d%d",&n2,&n1);
int count1 = 0,count2 = 0;/*conut1代表容量小的栈中的个数,count2代表容量大的*/
while(1)
{
char ch;
int num;
scanf("%c",&ch);
if(ch == 'A')
{
scanf("%d",&num);
// getchar();
if(count1 < n1)
{
// push(s1,num);
s1.push(num);
count1++;
}
else
{
printf("ERROR:Full\n");
}
}
else if(ch == 'D')
{
if(!s2.empty())
{
int item = s2.top();
s2.pop();
printf("%d\n",item); // printf("%d\n", pop(s2));
//count2--;
}
else
{
printf("ERROR:Empty\n");
}
}
else if(ch =='T')
{
break;
}
if(count1 == n1 && s2.empty())/*只要s1栈满,而s2空,就把s1全部转入s2*/
{
while(!s1.empty())
{
int j = s1.top();
s1.pop();
s2.push(j);
// push(s2,pop(s1));
count1--; //此处注意count1要减
//count2++;
}
}
}
return 0;
}