Fila dinâmica em C
Publicado por Alexandre (azk) (última atualização em 27/02/2016)
[ Hits: 3.978 ]
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;
}
utilities_linux.h - Biblioteca com diversas funções para o Linux
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
Como instalar o repositório do DBeaver no Ubuntu
Como instalar o Plex Media Server no Ubuntu
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
Programa fora de escala na tela do pc (10)
Fedora KDE plasma 42 X Módulo de segurança BB (Warsaw-2) (1)
O programa assinador digital (1)









