Fila em C
Publicado por Perfil removido (última atualização em 05/07/2011)
[ Hits: 6.680 ]
Fila alocada dinamicamente, em que o usuário tem a opção de inserir, remover ou mostrar os valores.
#include<stdlib.h>
#include<stdio.h>
typedef struct campo {
int valor;
struct campo *prox;
} *ptrCampo;
void iniciaFila(ptrCampo *l) {
*l = NULL;
}
/*=============inserção dos valores===================*/
void insere(ptrCampo *l, int numero) {
ptrCampo n = (ptrCampo)malloc(sizeof(struct campo));
(*n).valor = numero;
if(*l) {
(*n).prox = (**l).prox;
(**l).prox = n;
}
else
(*n).prox = n;
*l = n;
}
/*=================retirada dos valores===============*/
void retira(ptrCampo *l) {
ptrCampo aux;
if(*l == (**l).prox) {
aux = *l;
free(aux);
*l = NULL;
}
else {
aux = (**l).prox;
(**l).prox = (*aux).prox;
free(aux);
}
}
/*==============impressão dos valores=====================*/
void imprime(struct campo l) {
ptrCampo aux;
aux = l.prox;
printf("Fila: [");
printf("%d", (*aux).valor);
while((*aux).prox != l.prox) {
aux = (*aux).prox;
printf("%5d", (*aux).valor);
}
printf("]\n");
}
/*====================================================*/
main() {
ptrCampo f;
int opcao;
iniciaFila(&f);
printf("1: Inserir\t2: Remover\t3: Mostrar\t0: Sair\nOpção: ");
scanf("%d", &opcao);
while(opcao) {
switch(opcao) {
case 1: {
int s;
printf("Valor: ");
scanf("%d", &s);
insere(&f, s);
break;
}
case 2:
if(f)
retira(&f);
else
printf("Fila vazia!\n");
break;
case 3:
if(f)
imprime(*f);
else
printf("Fila vazia!\n");
break;
default:
printf("Opção inválida!\n");
}
printf("Opção: ");
scanf("%d", &opcao);
}
}
/*gcc (Ubuntu 4.4.3-4ubuntu5) 4.4.3*/
Ordenar um lista estática sequencial básica (bubblesort)
Agenda feita em C usando árvore binária
Nenhum comentário foi encontrado.
Jogando Daikatana (Steam) com Patch 1.3 via Luxtorpeda no Linux
LazyDocker – Interface de Usuário em Tempo Real para o Docker
Instalando COSMIC no Linux Mint
Turbinando o Linux Mint: o poder das Nemo Actions
Inteligência Artificial no desenvolvimento de software: quando começar a usar?
O widget do Plasma 6 Área de Notificação
[Resolvido] Algo deu errado ao abrir seu perfil
Problemas com o "startx&... no Slackware (10)
Conselho distribuiçao brasileira (8)
Atalho no Linux Mint não aparece menu de troca de monitores (0)









