Fila dinâmica em C
Publicado por Alexandre (azk4n) (última atualização em 27/02/2016)
[ Hits: 3.692 ]
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; }
Como verificar a validade de um CPF
Vários pacotes de ping disparados contra o host
Ajuda para calcular 5 Notas! Não Consigo colocar os gets na formula
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
Estou com sede em aprender sobre o nosso querido Linux. (1)
big linux sem audio como resolver (2)
Como faz para dar um update-grub por shell script [RESOLVIDO] (3)
[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