Fila dinâmica em C
Publicado por Alexandre (azk) (última atualização em 27/02/2016)
[ Hits: 3.972 ]
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; }
Regra de Horner para cálculo do polinômio
Fazendo o somatório de 1 até N
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Novos apps de produtividade, avanços em IA e distros em ebulição agitam o universo Linux
Digitando underscore com "shift" + "barra de espaços"
Como ativar a lixeira e recuperar aquivos deletados em um servidor Linux
Como mudar o nome de dispositivos Bluetooth via linha de comando
Problema em SSD ao dar boot LinuxMint LMDE FAYE 64 (0)
Baixar jogos Independentes para Ubuntu [RESOLVIDO] (4)
PIP3 - erro ao instalar módulo do mariadb para o Python (1)
Linux x Plataformas de Trading - um problema (in-)solúvel? (4)