As Filas e Pilhas
Por: Guga Morroid • 6/10/2022 • Trabalho acadêmico • 878 Palavras (4 Páginas) • 135 Visualizações
Explique a diferença entre uma pilha e uma fila, de exemplos
Resposta: Fila são estruturas de dados onde o primeiro elemento a ser inserido, será também o primeiro a ser retirado. Desta forma, serão adicionados elementos no fim e removê-los pelo início. A estrutura de dados fila segue um padrão conhecido como FIFO (first-in first-out), onde o primeiro a entrar é o primeiro a sair.
Já a pilha é uma estrutura de dados linear na qual os elementos podem ser inseridos e excluídos apenas de um lado da lista, chamado de topo . Uma pilha segue o princípio LIFO (Last In First Out), ou seja, o elemento inserido no último é o primeiro elemento a sair. A inserção de um elemento na pilha é chamada de operação push e a exclusão de um elemento da pilha é chamada de operação pop. Na pilha, sempre acompanhamos o último elemento presente na lista com um ponteiro chamado top.
Escolha e construa um algoritmo para implementar o atendimento em uma secretaria escolar
Resposta:
#include <stdio.h>
struct aluno {
char nome[50];
char curso[50];
int semestre;
int ra;
struct aluno *proximo;
} typedef item;
struct {
item *primeiro;
} typedef fila;
void adicionar(fila *f){
item *novo = (item*)malloc(sizeof(item));
printf("\nInforme o nome:");
scanf("%s", &novo->nome);
printf("\nInforme o curso, semestre e ra:");
scanf("%s %i %i", &novo->curso, &novo->semestre, &novo->ra);
novo->proximo = NULL;
if(filaVazia(f)){
f->primeiro = novo;
} else {
item *aux = f->primeiro;
while(aux->proximo != NULL){
aux = aux->proximo;
}
aux->proximo = novo;
}
printf("\nATENDIMENTO INICIADO !!! %x", novo);
}
void listar(fila *f){
if(filaVazia(f)){
printf("\nFILA VAZIA!!!");
} else {
item *aux = f->primeiro;
do{
printf("\nNOME=%s, CURSO=%s, SEMESTRE=%i, RA=%i", aux->nome,
aux->curso, aux->semestre, aux->ra);
aux = aux->proximo;
}while(aux != NULL);
}
}
void remover(fila *f){
if(filaVazia(f)){
printf("\nFILA VAZIA!!!");
} else {
item *aux = f->primeiro;
f->primeiro = aux->proximo;
printf("\nREMOVER NOME=%s, CURSO=%s, SEMESTRE=%i, RA=%i", aux->nome,
aux->curso, aux->semestre, aux->ra);
free(aux);
}
}
int filaVazia(fila *f){
return (f->primeiro==NULL);
}
int main()
{
fila f1 = {NULL};
adicionar(&f1);
adicionar(&f1);
adicionar(&f1);
listar(&f1);
remover(&f1);
...