题目来源:https://cn.vjudge.net/problem/HDU-1702
题目大意:
编程实现栈(stack)和队列(queue)。
解题思路:
栈(先进后出),队列(先进先出)。
AC代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 100
#define M 10
void FIFO(char *q, int m, int *ff);
void FILO(char *q, int m, int *fl);
int main()
{
int n, r, m, fifo[N], filo[N];
char qu[M], re[M];
scanf("%d",&n);
for (r=0;r<n;r++)
{
scanf("%d %s",&m,qu);
if (!strcmp(qu,"FIFO"))
{
FIFO(re,m,fifo);
}
else
{
FILO(re,m,filo);
}
}
return 0;
}
void FIFO(char *q, int m, int *ff)
{
int i, j, k;
for (i=0,j=0,k=0;i<m;i++)
{
scanf("%s",q);
if (!strcmp(q,"IN"))
{
if (j==N)
{
j = 0;
}
scanf("%d",&ff[j]);
j++;
}
else
{
if (k==N)
{
k = 0;
}
if (k==j)
{
printf("None\n");
}
else
{
printf("%d\n",ff[k]);
}
k++;
}
}
}
void FILO(char *q, int m, int *fl)
{
int i, j;
for (i=0,j=0;i<m;i++)
{
scanf("%s",q);
if (!strcmp(q,"IN"))
{
scanf("%d",&fl[j]);
j++;
}
else
{
if (!j)
{
printf("None\n");
}
else
{
printf("%d\n",fl[j-1]);
j--;
}
}
}
}