This repository has been archived by the owner on Mar 1, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlista_fila_5.c
132 lines (117 loc) · 2.3 KB
/
lista_fila_5.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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define bool int
#define true 1
#define false 0
typedef struct nodo{
int n;
struct nodo *next;
}nodo;
typedef struct fila{
nodo *first;
nodo *last;
int maior,menor;
float media;
} fila;
void listar(fila *f);
void pop(fila *f, int *c);
bool push(fila *f, int *c);
bool full(fila *f);
bool empty(fila *f);
void reset(fila *f);
void acha_coisas(fila *f);
int main(int argc, char const *argv[])
{
fila *f = (fila*) malloc (sizeof(fila));
char again = 'y';
int content;
printf("---PREENCHA A FILA. DIGITE N PARA SAIR---\n");
while(again!='n' && again!='N'){
printf("Número: ");
scanf("%d",&content);
getchar();
push(f,&content);
printf("Continuar? y/n\n");
scanf("%c",&again);
}
printf("--FILA INSERIDA--\n");
listar(f);
acha_coisas(f);
printf("\n--O MAIOR ELEMENTO É %d, O MENOR ELEMENTO É %d E A MÉDIA ARITMÉTICA É %.2f--\n",f->maior,f->menor,f->media);
free(f);
return 0;
}
void reset(fila *f){
f->first = NULL;
f->last = NULL;
f->maior =0;
f->menor = 100000000;
f->media = 0;
}
bool empty(fila *f){
return f->first==NULL;
}
bool full(fila *f){
return false;
}
bool push(fila *f,int *c){
nodo *novo = (nodo*) malloc (sizeof(nodo));
if(novo==NULL){
printf("Erro de alocação.");
return false;
}
novo->n = *c;
novo->next = NULL;
if(f->last != NULL){
f->last->next=novo;
}
else{
f->first = novo;
}
f->last = novo;
return true;
}
void pop(fila *f, int *c){
nodo *nodo_aux;
if(f->first == NULL){
printf("--EMPTY STACK. CANNOT DELETE--\n");
return;
}
else{
nodo_aux = f->first;
*c = f->first->n;//recebe o conteudo do primeiro item da fila
f->first = f->first->next;
}
if(f->first == NULL){
f->last = NULL;
}
free(nodo_aux);
}
void listar(fila *f){
nodo *count;
if(f->first == NULL){
printf("FILA VAZIA");
return;
}
for(count = f->first;count!=NULL;count= count ->next){
printf(" %d ",count->n);
}
free(count);
}
void acha_coisas(fila *f){//Não usei a estrutura de fila aqui....
int conteudo;
int div = 1;
while(!empty(f)){
pop(f,&conteudo);
if(conteudo > f->maior){
f->maior = conteudo;
}
if(conteudo < f->menor){
f->menor = conteudo;
}
f->media+=conteudo;
div++;
}
f->media/=div;
}