Fila usando lista encadeada
Publicado por Kleber de Andrade Reis 13/06/2005
[ Hits: 28.043 ]
ae galera esse é um exemplo de fila usando lista encadeada.....
muito legal esse script....!!!!
/*
+-----------------------------------------------------------+
| Programador...: Kleber de Andrade Reis |
| Descrição.....: Programa da lista de exercicio |
| Professor ....: Evanderson |
| Arquivo.......: fila_n2.c |
+-----------------------------------------------------------+
Lista Simplesmente Encadeada
Desenvolva um programa, implementando as seguintes operações em filas. (cria, insere, exclui, vazia, imprime, primeiro, libera).
Sendo:
Cria: cria uma nova fila vazia.
Insere: inclui um elemento da fila.
Exclui: exclui um elemento da fila.
Vazia: retorna se a fila está vazia ou não.
Imprime: Imprime no vídeo os elementos da fila.
Primeiro: retorna o primeiro elemento da fila.
Libera: libera a memória alocada pela fila
Desenvolva uma rotina para incluir dois elementos na fila (insere2).
Desenvolva uma rotina para excluir n elementos da fila (excluin).
*/
#include <stdio.h>
#include <stdlib.h>
#define MALLOC(x) ((x *) malloc (sizeof(x)))
//declaração da estrutura
struct no{
int n1,n2,n3,n4;
char aluno[30];
struct no *proximo;
};
typedef struct no no_t;
no_t *novo;
//declaração das funções
no_t *cria(no_t *lista);
no_t *insini(no_t *lista);
no_t *insfim(no_t *lista);
no_t *insere2(no_t *lista);
no_t *retira(no_t *lista);
no_t *retiran(no_t *lista, int k);
int imprime(no_t *lista);
int vazia(no_t *lista);
int primeiro(no_t *lista);
no_t *libera(no_t *lista);
int main(void)
{
int op,k,r,m;
no_t *lista;
for (;;)
{
system("clear");
printf("\n0 - Cria uma lista");
printf("\n1 - Inclui um elemento na fila");
printf("\n2 - Inclui dois elemento na fila");
printf("\n3 - Exclui um elemento da fila");
printf("\n4 - Exclui n elemento da fila");
printf("\n5 - Verifica se a fila esta vazia");
printf("\n6 - Imprime os elementos da fila");
printf("\n7 - Imprime o primeiro elemento da fila");
printf("\n8 - Libera memoria");
printf("\n9 - Sair");
printf("\n\nSua opcao: \n");
scanf("%d",&op);
switch(op){
case 0 :
lista=cria(lista);
break;
case 1 :
getchar();
if(lista==NULL)
lista=insini(lista);
else
lista=insfim(lista);
break;
case 2 :
getchar();
lista=insere2(lista);
break;
case 3 :
lista=retira(lista);
break;
case 4 :
system("clear");
printf("Digite a quantidade a ser excluida\n");
scanf("%d",&k);
lista=retiran(lista,k);
break;
case 5 :
vazia(lista);
break;
case 6 :
imprime(lista);
break;
case 7 :
primeiro(lista);
break;
case 8 :
lista=libera(lista);
break;
case 9 :
exit(0);
default:
system("clear");
printf("Opção Errada");
scanf("%d",&k);
}
}
return 0;
}
no_t *cria(no_t *lista){
system("clear");
lista = MALLOC(no_t);
lista=0;
printf("Lista criada com sucesso!!!\n");
sleep(3);
return lista;
};
no_t *retiran(no_t *lista, int k)
{
int i=0;
no_t *p;
p=lista;
while(i<k)
{
if(lista!=NULL)
{
lista=lista->proximo;
free(p);
p=lista;
}
else
return NULL;
i++;
}
return lista;
};
no_t *retira(no_t *lista)
{
no_t *p;
p=lista;
if(lista!=NULL)
{
lista=lista->proximo;
free(p);
return lista;
}
return NULL;
};
no_t *libera(no_t *lista)
{
no_t *p;
p=lista;
if(lista!=NULL)
{
while(p!=NULL)
{
p=lista->proximo;
free(lista);
lista=p;
}
}
return NULL;
};
no_t *insini(no_t *lista)
{
int n1,n2,n3,n4;
char al[30];
printf("Digite o nome do aluno\n");
gets(al);
printf("N1: ");
scanf("%d",&n1);
printf("N2: ");
scanf("%d",&n2);
printf("N3: ");
scanf("%d",&n3);
printf("N4: ");
scanf("%d",&n4);
novo = MALLOC(no_t);
novo->proximo = lista;
sprintf(novo->aluno,"%s",al);
novo->n1 = n1;
novo->n2 = n2;
novo->n3 = n3;
novo->n4 = n4;
return novo;
};
no_t *insfim(no_t *lista)
{
int n1,n2,n3,n4;
no_t *aux;
char al[30];
aux=lista;
printf("Digite o nome do aluno\n");
gets(al);
printf("N1: ");
scanf("%d",&n1);
printf("N2: ");
scanf("%d",&n2);
printf("N3: ");
scanf("%d",&n3);
printf("N4: ");
scanf("%d",&n4);
novo = MALLOC(no_t);
while(aux->proximo!=NULL)
{
aux=aux->proximo;
}
novo->proximo = NULL;
sprintf(novo->aluno,"%s",al);
novo->n1 = n1;
novo->n2 = n2;
novo->n3 = n3;
novo->n4 = n4;
aux->proximo=novo;
return lista;
};
no_t *insere2(no_t *lista)
{
int n1,n2,n3,n4,i=0;
char al[30];
no_t *aux;
aux=lista;
while(i<2)
{
printf("Digite o nome do aluno\n");
gets(al);
printf("N1: ");
scanf("%d",&n1);
printf("N2: ");
scanf("%d",&n2);
printf("N3: ");
scanf("%d",&n3);
printf("N4: ");
scanf("%d",&n4);
novo = MALLOC(no_t);
novo->proximo = NULL;
sprintf(novo->aluno,"%s",al);
novo->n1 = n1;
novo->n2 = n2;
novo->n3 = n3;
novo->n4 = n4;
if(aux==NULL)
{
aux=novo;
aux->proximo=NULL;
lista=aux;
}
else
{
while(aux->proximo!=NULL)
{
aux=aux->proximo;
}
aux->proximo=novo;
}
i++;
getchar();
}
return lista;
};
int imprime(no_t *lista)
{
no_t *p;
int k,i=0;
system("clear");
if (lista==NULL)
{
system("clear");
printf("Lista Vazia");
scanf("%d",&k);
return 0;
}
p = lista;
do{
printf("\nAluno: %s",p->aluno);
printf("\nN1: %d",p->n1);
printf("\nN2: %d",p->n2);
printf("\nN3: %d",p->n3);
printf("\nN4: %d",p->n4);
printf("\n");
p = p->proximo;
i++;
}while (p!=NULL);
printf("\n\nTEM %d ITENS NA LISTA",i);
scanf("%d",&k);
return 0;
};
int vazia(no_t *lista)
{
system("clear");
no_t *p;
p=lista;
int i=0;
while(p!=NULL)
{
p=p->proximo;
i++;
}
if(i==0)
printf("A lista esta vazia!!!\n");
else
printf("\n\nTEM %d ITENS NA LISTA",i);
sleep(3);
return i;
};
int primeiro(no_t *lista)
{
no_t *p;
int k;
system("clear");
if (lista==NULL)
{
system("clear");
printf("Lista Vazia");
scanf("%d",&k);
return 0;
}
p = lista;
printf("\nAluno: %s",p->aluno);
printf("\nN1: %d",p->n1);
printf("\nN2: %d",p->n2);
printf("\nN3: %d",p->n3);
printf("\nN4: %d",p->n4);
printf("\n");
scanf("%d",&k);
return 0;
};
Algoritmo estatístico para cálculo de PI em C
Nenhum comentário foi encontrado.
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
É normal não gostar de KDE? (9)
Linux é a solução para o fim do Windows10? (2)
Problemas com Driver NVIDIA (4)









