-
Notifications
You must be signed in to change notification settings - Fork 0
/
funcoesDeFila.c
108 lines (87 loc) · 1.79 KB
/
funcoesDeFila.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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#include <stdio.h>
#include <stdlib.h>
#include "carta.h"
#include "funcoesDeFila.h"
struct no{
struct carta dados;
struct no *prox;
};
typedef struct no No;
struct fila{
struct no *inicio;
struct no *fim;
};
Fila *criarFila(){
Fila *fi = (Fila*)malloc(sizeof(Fila));
if(fi != NULL){
fi->inicio = NULL;
fi->fim = NULL;
}
return fi;
}
int inserirFila(Fila *fi, struct carta novosDados){
if(fi == NULL){
return 0;
}
No *nova = (No*)malloc(sizeof(No));
if(nova == NULL){
return 0;
}
nova->dados = novosDados;
nova->prox = NULL;
if(fi->fim == NULL){
fi->inicio = nova;
}
else{
fi->fim->prox = nova;
}
fi->fim = nova;
return 1;
}
int removerFila(Fila *fi, struct carta *dados){
if(fi == NULL || fi->inicio == NULL){
return 0;
}
No *aux = fi->inicio;
fi->inicio = fi->inicio->prox;
if(fi->inicio == NULL){
fi->fim = NULL;
}
dados->numero = aux->dados.numero;
dados->bois = aux->dados.bois;
dados->jogador = aux->dados.jogador;
free(aux);
return 1;
}
int acessarFila(Fila *fi, struct carta *dados){
if(fi == NULL || fi->inicio == NULL){
return 0;
}
*dados = fi->fim->dados;
return 1;
}
int exibirFila(Fila *fi){
if(fi == NULL || fi->inicio == NULL){
printf("\n");
return 0;
}
No *aux = fi->inicio;
while(aux != NULL){
printf("[%d] ", aux->dados.numero);
aux = aux->prox;
}
printf("\n");
return 1;
}
int tamanhoFila(Fila *fi){
if(fi == NULL || fi->inicio == NULL){
return 0;
}
int tamanhoFila = 0;
No *aux = fi->inicio;
while(aux != NULL){
tamanhoFila++;
aux = aux->prox;
}
return tamanhoFila;
}