-
Notifications
You must be signed in to change notification settings - Fork 0
/
Queue.c
54 lines (48 loc) · 1.22 KB
/
Queue.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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/*
Structs utilizadas:
no -> serve para fazer a lista ligada para implementarmos a fila(queue)
queue - > estrutura que representa a fila com nós de inicio e fim
*/
typedef struct No{
char nome[30], opera[30], type[30];
int qtd;
struct No *prox;
} no;
typedef struct Queue{
int sz; // tamanho
no *ini, *fim;
} queue;
/*
Funções de Push:
push_back : é o push de uma fila, o elemento vai para ultimo lugar de uma fila
*/
void push_back(queue *fila,char na[],char op[],char ty[],int qt){
no *novo_no = malloc(sizeof(no));
novo_no->qtd=qt;
strcpy(novo_no->nome,na);
strcpy(novo_no->opera,op);
strcpy(novo_no->type,ty);
novo_no->prox=NULL;
if(fila->ini==NULL){ // se a fila ta vazia iniciamos ela
fila->ini=novo_no;
fila->fim=novo_no;
fila->sz=1;
return ;
}
fila->fim->prox=novo_no;
fila->fim=novo_no; //colocamos o elemento no fim
fila->sz++;
}
/*
Funções de pop:
pop_queue : é o pop de uma fila, o elemento removido é o primeiro da fila que é o mais antigo
*/
void pop_queue(queue *fila){
no *first=fila->ini;
fila->ini=first->prox;
fila->sz--;
free(first);
}