-
Notifications
You must be signed in to change notification settings - Fork 0
/
Fila.c
63 lines (53 loc) · 1.25 KB
/
Fila.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#include <stdio.h>
#include <stdlib.h>
typedef struct stlista {
int *items;
int inicio, fim, tam;
} Lista;
void initList(Lista *lista, int tam) {
lista->items = malloc(tam*sizeof(int));
lista->inicio = -1;
lista->fim = -1;
lista->tam = tam;
}
void inserir(Lista *lista, int item) {
if (lista->fim < (lista->tam)-1) {
lista->fim++;
lista->items[lista->fim] = item;
if (lista->inicio == -1) {
lista->inicio++;
}
}
}
void remover(Lista *lista) {
if (lista->inicio > -1) {
printf("%d\n", lista->items[lista->inicio]);
if (lista->inicio < lista->tam) {
lista->inicio++;
if (lista->inicio == lista->fim+1) {
lista->inicio = -1;
lista->fim = -1;
}
}
}
}
int main() {
Lista *lista = (Lista*)malloc(sizeof(lista));
int tam, item;
char option;
scanf("%d", &tam);
initList(lista, tam);
while(scanf(" %c", &option) != EOF) {
switch (option) {
case('E'):
scanf("%d", &item);
inserir(lista, item);
break;
case('D'):
remover(lista);
break;
}
}
free(lista);
return 0;
}