Fila usando lista encadeada
Publicado por Kleber de Andrade Reis 13/06/2005
[ Hits: 27.940 ]
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; };
Calculadora em C separada por funções e com diretivas
Algoritmo para detecção do sistema operacional em C
Nenhum coment�rio foi encontrado.
Aprenda a Gerenciar Permissões de Arquivos no Linux
Como transformar um áudio em vídeo com efeito de forma de onda (wave form)
Como aprovar Pull Requests em seu repositório Github via linha de comando
Visualizar arquivos em formato markdown (ex.: README.md) pelo terminal
Dando - teoricamente - um gás no Gnome-Shell do Arch Linux
Como instalar o Google Cloud CLI no Ubuntu/Debian
Mantenha seu Sistema Leve e Rápido com a Limpeza do APT!
Procurando vídeos de YouTube pelo terminal e assistindo via mpv (2025)
Sinto uma leve lentidão ao arrastar, miniminizar e restauras as janela... (3)
Alguém já usou o framework Avalonia para desenvolver interfaces de usu... (4)
Ajuda Pra Melhoria do NFTABLES. (8)
Pastas da raiz foram para a área de trabalho [RESOLVIDO] (7)