Fila em C
Publicado por Perfil removido (última atualização em 05/07/2011)
[ Hits: 6.607 ]
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*/
Biblioteca estática para manipulação de pilhas
Estrutura de dados: Lista dinâmica duplamente encadeada
Nenhum comentário foi encontrado.
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Novos apps de produtividade, avanços em IA e distros em ebulição agitam o universo Linux
Como instalar o repositório do DBeaver no Ubuntu
Como instalar o Plex Media Server no Ubuntu
Digitando underscore com "shift" + "barra de espaços"
Como ativar a lixeira e recuperar aquivos deletados em um servidor Linux
Como mudar o nome de dispositivos Bluetooth via linha de comando
dpkg: erro: gatilho de arquivo duplicado chamado pelo arquivo de nome (6)
Instalação não está resolvendo as dependencias (2)
Captação de áudio no zorin linux começa a diminuir com o tempo (5)
Alternativas ao Multilogin para gerenciamento de múltiplas contas/prof... (0)









