Fila dinâmica em C
Publicado por Andrey (última atualização em 27/06/2016)
[ Hits: 9.003 ]
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; }
Manipulação de letras maiusculas e minusculas
[C] Decompositor de números em fatores primos
Nenhum comentário foi encontrado.
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Flatpak: remover runtimes não usados e pacotes
Mudar o gerenciador de login (GDM para SDDM e vice-versa) - parte 2
Wifi não funciona no Aspire ES 15 com o Debian (9)
Como atualizar o Debian 8 para o 10 (10)
Dica sobre iptables ACCEPT e DROP (6)
NGNIX - Aplicar SNAT para evitar roteamento assimetrico (29)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta