Fila dinâmica em C
Publicado por Andrey (última atualização em 27/06/2016)
[ Hits: 9.291 ]
Homepage: https://github.com/andreycdias
Código simples de fila dinâmica em C.
A estrutura utiliza de duas cabeças para melhor desempenho na hora de remover e inserir na fila.
#include <stdio.h>
#include <stdlib.h>
typedef struct queueElem{ //
int data; //you can change for any type of data
struct queueElem*next; //
}queueELEM; //
typedef struct queue{
struct queueElem*begin;
struct queueElem*end;
}queue;
int opt;
queue*create(){
queue*q = (queue*)malloc(sizeof(queue));
if(!q)
exit(1);
else{
q->begin = NULL;
q->end = NULL;
}
return q;
}
int emptyQUEUE(queue*q){
if(q==NULL) return 1;
if(q->begin==NULL) return 1;
else return 0;
}
int readVALUE(){
int value;
printf (" value to insert: ");
scanf("%i", &value);
return value;
}
queueELEM* allocate(int value){
queueELEM* node = (queueELEM*)malloc(sizeof(queueELEM));
if(!node)
exit(1);
else{
node->data = value;
node->next = NULL;
return node;
}
}
void enqueue(queue*q){
queueELEM*node = allocate(readVALUE());
if(!node)
exit(1);
if(q->end == NULL)
q->begin = node;
else
q->end->next = node;
q->end = node;
}
int dequeue(queue*q){
if(emptyQUEUE(q)) return 0;
queueELEM*node = q->begin;
q->begin = q->begin->next;
if(q->begin!=NULL)
q->end = NULL;
free(node);
return 1;
}
void display(queue*q){
if(emptyQUEUE(q)){
printf (" empty queue;\n");
return ;
}
queueELEM*aux = q->begin;
printf ("\n current queue: ");
while(aux!=NULL){
printf ("%i ", aux->data);
aux = aux->next;
}
printf ("\n");
}
void cases(int opt, queue*q){
switch(opt){
case 1:
enqueue(q);
display(q);
break;
case 2:
dequeue(q);
display(q);
break;
default:
if (opt!=0) printf (" invalid option;\n");
}
}
int menu(){
printf ("\n queue options;\n");
printf (" 0 quit;\n");
printf (" 1 enqueue;\n");
printf (" 2 dequeue;\n");
printf (" your choice: ");
scanf("%i", &opt);
return opt;
}
int main (void){
queue*q = create();
do{
opt = menu();
cases(opt,q);
}while(opt);
return 0;
}
Integração numérica - Método da Quadratura Gaussiana
Rotinas para manipulação de matrizes
Angelinux Scripts - Palpite para Megasena em C
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
Problemas com Driver NVIDIA (0)
Programa fora de escala na tela do pc (19)
Fedora KDE plasma 42 X Módulo de segurança BB (Warsaw-2) (1)









