Fila dinâmica em C
Publicado por Andrey (última atualização em 27/06/2016)
[ Hits: 9.255 ]
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; }
Painel de configuração placas ati
Nenhum comentário foi encontrado.
Kernel 6.18 em foco, betas fervilhando e avanços em IA no Linux
O que é o THP na configuração de RAM do Linux e quando desabilitá-lo
Comparação entre os escalonadores BFQ e MQ-Deadline (acesso a disco) no Arch e Debian
Adicionando o repositório backports no Debian 13 Trixie
Como definir um IP estático no Linux Debian
Como colocar atalho para uma pasta na área de trabalho do Ubuntu 24.04... (0)
Como instalar Counter-Strike 1.6? (2)
intervenção politica pode interver no Fedora Linux [RESOLVIDO] (12)