Fila dinâmica em C
Publicado por Andrey (última atualização em 27/06/2016)
[ Hits: 8.853 ]
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; }
Ajuda para calcular 5 Notas! Não Consigo colocar os gets na formula
Nenhum comentário foi encontrado.
Agora temos uma assistente virtual no fórum!!! (247)
Manutenção de sistemas Linux Debian e derivados com apt-get, apt, aptitude e dpkg
Melhorando o tempo de boot do Fedora e outras distribuições
Como instalar as extensões Dash To Dock e Hide Top Bar no Gnome 45/46
Como Atualizar Fedora 39 para 40
Instalar Google Chrome no Debian e derivados
Consertando o erro do Sushi e Wayland no Opensuse Leap 15
Instalar a última versão do PostgreSQL no Lunix mantendo atualizado
Flathub na sua distribuição Linux e comandos básicos de gerenciamento
iso de sistema 32 bit em atividade (15)
Como transfiro os pokemons do fire red para o emulador mupen64? (1)
redirecionando saida de comando touch para o AWK[AJUDA] (2)