///////////////////队列的实现之链式存储///////////////////////////////////////////////////
#include<cstdio>
#include<iostream>
using namespace std;
#define MAXN 10005
#define Item int
typedef struct data
{
Item e;
data *next;
data()
{
next=NULL;
}
}queue;
queue *front,*rear;
void init()//队列的初始化
{
front=rear=NULL;
}
bool empty()//判断队列是否为空
{
if(front==NULL)
{
return true;
}
return false;
}
Item Pop()//出队列
{
if(empty())//队列为空
{
return -1;
}
data *del=front;
if(front==rear)
front=rear=NULL;
else
front=front->next;
Item p=del->e;
delete del;
return p;
}
bool Insert(Item p)//入队列
{
queue *ins=new data();
if(ins==NULL)
return false;
ins->e=p;
if(rear==NULL)
front=rear=ins;
else
{
rear->next=ins;
rear=ins;
}
return true;
}
int main()
{
Item x;
init();
while(scanf("%d",&x)==1)
{
if(x==-1)
{
printf("%d\n",Pop());
}
else
{
Insert(x);
}
}
return 0;
}
////////////////////队列实现之顺序存储///////////////////////////////////////////////////
#include<cstdio>
#include<iostream>
using namespace std;
#define MAXN 10005
#define Item int
Item queue[MAXN];
int front,rear;
void init()//队列的初始化
{
front=0;
rear=0;
}
bool empty()//判断队列是否为空
{
if(front==rear)
{
return true;
}
return false;
}
Item Pop()//出队列
{
if(empty())
{
return -1;
}
else
{
return queue[front++];
}
}
bool Insert(Item p)//入队列
{
if(rear<MAXN)
{
queue[rear++]=p;
return true;
}
return false;
}
int main()
{
Item x;
init();
while(scanf("%d",&x)==1)
{
if(x==-1)
{
printf("%d\n",Pop());
}
else
{
Insert(x);
}
}
return 0;
}
/////////栈实现之链式存储//////////////////////////////////////////////
#include<cstdio>
#include<iostream>
using namespace std;
#define MAXN 10005
#define Item int
typedef struct data
{
Item e;
data *next;
data()
{
next=NULL;
}
}stack;
stack *top;
void init()//栈的初始化
{
top=NULL;
}
bool empty()//栈的判空
{
return top==NULL;
}
bool Push(Item p)//入栈
{
stack *ins=new data();
if(ins==NULL)
return false;
ins->e=p;
ins->next=top;
top=ins;
return false;
}
Item Pop()//出栈
{
if(empty())//栈空不能出栈
{
return -1;
}
data *del=top;
top=top->next;
Item p=del->e;
delete del;
return p;
}
int main()
{
Item x;
init();
while(scanf("%d",&x)==1)
{
if(x==-1)
{
printf("%d\n",Top());
}
else
{
Push(x);
}
}
return 0;
}
//////////////////////////栈实现之顺序存储///////////////////////////////////////////////
#include<cstdio>
#include<iostream>
using namespace std;
#define MAXN 10005
#define Item int
Item stack[MAXN];
int top;
void init()//栈的初始化
{
top=0;
}
bool empty()//栈的判空
{
return top==0;
}
bool Push(Item p)//入栈
{
if(top<MAXN)
{
stack[top++]=p;
return true;
}
return false;
}
Item Top()//出栈
{
if(empty())//栈空不能出栈
{
return -1;
}
return stack[--top];
}
int main()
{
Item x;
init();
while(scanf("%d",&x)==1)
{
if(x==-1)
{
printf("%d\n",Top());
}
else
{
Push(x);
}
}
return 0;
}