Fila dinâmica em C
Publicado por Alexandre (azk4n) (última atualização em 27/02/2016)
[ Hits: 3.727 ]
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; }
Simulador do Sorteio da Mega Sena
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
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
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Tem como instalar o gerenciador AMD Adrenalin no Ubuntu 24.04? (16)
Arch Linux - Guia para Iniciantes (2)
Problemas ao instalar o PHP (11)
Tenho dois Link's ( IP VÁLIDOS ), estou tentando fazer o failover... (0)