덱 구현 문제.
#include <stdio.h>
#include <string.h>
#define SIZE 10000
int D[SIZE], f = 0, r = SIZE-1, s = 0;
int main()
{
int N, i;
char c[12];
scanf("%d", &N);
for (i = 0; i < N; i++)
{
scanf("%s", c);
if (strcmp(c, "push_front") == 0) {
f=(f-1+SIZE)%SIZE;
scanf("%d",&D[f]);
s++;
}
else if (strcmp(c, "push_back") == 0) {
r=(r+1)%SIZE;
scanf("%d", &D[r]);
s++;
}
else if (strcmp(c, "pop_front") == 0) {
printf("%d\n", s > 0 ? D[f] : -1);
if(s>0) { s--; f=(f+1)%SIZE; }
}
else if (strcmp(c, "pop_back") == 0) {
printf("%d\n", s > 0 ? D[r] : -1);
if(s>0) { s--; r=(r-1+SIZE)%SIZE; }
}
else if (strcmp(c, "size") == 0)
printf("%d\n", s);
else if (strcmp(c, "empty") == 0)
printf("%d\n", s > 0 ? 0 : 1);
else if (strcmp(c, "front") == 0)
printf("%d\n", s > 0 ? D[f] : -1);
else if (strcmp(c, "back") == 0)
printf("%d\n", s > 0 ? D[r] : -1);
}
}
큐와 똑같이, f와 r는 각각 양 끝을 향하도록 두자.