Fila dinâmica em C
Publicado por Alexandre (azk) (última atualização em 27/02/2016)
[ Hits: 3.862 ]
Homepage: null
Implementação de uma simples fila dinâmica em C.
Código em en_US.
azk4n
/* a simple dynamic queue in C functions: - insert and remove element (no) - show the queue - free queue writer: Alexandre (azk4n) */ #include <stdio.h> #include <stdlib.h> typedef struct NO{ int data; struct NO *nxt; }no; int size; no *tmp; int empty(no *queue){ if(queue->nxt == NULL) return 1; else return 0; } void showQueue(no *queue){ if(empty(queue)){ printf("\nempty queue\n\n"); }else{ tmp = queue->nxt; printf("\n"); while(tmp != NULL){ printf("%d ", tmp->data); tmp = tmp->nxt; }printf("\nsize of queue: %d\n\n", size); } } void enqueue(no *queue){ no *new = (no*) malloc(sizeof(no)); new->nxt = NULL; printf("\ntake the new node: \n"); scanf("%d", &new->data); printf("\n"); if(empty(queue)){ queue->nxt = new; size++; }else{ tmp = queue->nxt; while(tmp->nxt != NULL){ tmp = tmp->nxt; } tmp->nxt = new; size++; } } no *dequeue(no *queue){ if(empty(queue)){ printf("\nempty queue\n\n"); return NULL; }else{ tmp = queue->nxt; queue->nxt = tmp->nxt; size--; return tmp; } } void freeQueue(no *queue){ if(empty(queue)){ printf("\nempty queue\n\n"); }else{ no *nxtNode, *actualNode; actualNode = queue->nxt; while(actualNode != NULL){ nxtNode = actualNode->nxt; free(actualNode); actualNode = nxtNode; } printf("\nqueue clear\n\n"); } } int main(){ no *queue = (no*) malloc(sizeof(no)); if(!queue){ printf("no memory"); exit(1); }else{ queue->nxt = NULL; size = 0; int opt; do{ printf("0 -> quit\n"); printf("1 -> show queue\n"); printf("2 -> add node in queue\n"); printf("3 -> remove node in queue\n"); printf("4 -> free queue\n"); printf("opt: "); scanf("%d", &opt); switch(opt){ case 1: showQueue(queue); break; case 2: enqueue(queue); break; case 3: tmp = dequeue(queue); if(tmp != NULL) printf("\nelement removed: %d\n\n", tmp->data); break; case 4: freeQueue(queue); queue->nxt = NULL; size = 0; break; default: if(opt != 0) printf("\ninsert valid option!\n\n"); } }while(opt != 0); } return 1; }
Converçor de Decimal para Binario
Programa para cálculo de números complexos
Aprenda a Gerenciar Permissões de Arquivos no Linux
Como transformar um áudio em vídeo com efeito de forma de onda (wave form)
Como aprovar Pull Requests em seu repositório Github via linha de comando
Mantenha seu Sistema Leve e Rápido com a Limpeza do APT!
Procurando vídeos de YouTube pelo terminal e assistindo via mpv (2025)
Gravação de tela com temporizador
como instalo panfrost-dri e o driver panfrost fork , ou panfrost (16)
problema no debian que poderia ser corrigido por comando? (12)
Usar uma VM dentro do meu notebook como firewall para um dispositivo e... (0)
Eu tive esse erro aqui depois de de baixar o HyprLand Ubuntu na versão... (1)