Você está na página 1de 4

#include <stdio.h> #include <stdlib.

h>

#define MAX 300 // Constante typedef struct{ int voo; char nome[30]; int horario; }VIAGEM; typedef struct { VIAGEM vetor[MAX]; // vetor do tipo viagem. int nElem; } LISTA; // por que lista?! observe que em lista usamos vetores ou a opo record. void criarLista(LISTA *lista) // a funo recebe o endereo da lista {// A lista um ponteiro para estrutura printf("Lista Criada\n\n"); lista->nElem = 0; } void inserirFinal(LISTA * lista, VIAGEM dado) { lista->vetor[lista->nElem]=dado; lista->nElem = lista->nElem+1; } void inserirPosicao(LISTA * lista, int pos, VIAGEM dado) { int i; if(pos >= lista->nElem) inserirFinal(lista, dado); else { for (i=lista->nElem;i > pos; i--){ lista->vetor[i]= lista->vetor[i-1]; } lista->vetor[pos] = dado; lista->nElem = lista->nElem + 1; } printf("Voo Inserido\n\n"); } void inserirInicio(LISTA * lista, VIAGEM dado) { inserirPosicao(lista, 0, dado); } void listarInicioAoFim(LISTA * lista) { int i; VIAGEM dado; for(i=0;i<lista->nElem;i++) { dado = lista->vetor[i]; printf("Voo: %d\n\n",dado.voo); printf("Nome: %s\n",dado.nome); printf("Horario: %d\n\n",dado.horario); }

} void listarFimAoInicio(LISTA *lista) { int i; VIAGEM dado; for(i=lista->nElem-1;i>=0;i--) { dado = lista->vetor[i]; printf("Voo: %d\n\n",dado.voo); printf("Nome: %s\n",dado.nome); printf("Horario: %d\n\n",dado.horario); } } void eliminarPosicao(LISTA *lista, int pos) { int i; if(pos < lista->nElem-1) { if(pos == (lista->nElem-1)) { lista->nElem = lista->nElem-1; } else { for(i=pos;i<lista->nElem-1;i++) { lista->vetor[i] = lista->vetor[i+1]; } lista->nElem = lista->nElem-1; } } } int tamanho (LISTA lista) { return lista.nElem; } void destruir(LISTA *lista) { lista->nElem = 0; } int main() { int opcao=0; int pos; LISTA lista; VIAGEM *cp; VIAGEM dado; do { printf("===========***********===========\n"); printf("=======Empresa Voe Sempre========\n"); printf("========Controles de Voo=========\n"); printf("===========***********===========\n"); printf("==========Menu de Opcoes=========\n"); printf("\n** 1 - Criar Lista **\n"); printf("** 2 - Inserir Inicio **\n"); printf("** 3 - Inserir Final **\n");

printf("** 4 - Inserir posicao **\n"); printf("** 5 - Listar do Inicio ao fim **\n"); printf("** 6 - Listar do fim ao inicio **\n"); printf("** 7 - Eliminar **\n"); printf("** 8 - Tamanho da Lista **\n"); printf("** 9 - Destruir **\n"); printf("** 10 - Sair **\n"); printf("===========***********===========\n"); printf(" Opcao: "); scanf("%d",&opcao); system("cls"); switch(opcao) { case 1: criarLista(&lista); // Passa o endereo da lista break; case 2: printf("Voo: "); scanf("%d",&dado.voo); printf("Nome: "); scanf("%s",dado.nome);// Lendo os dados printf("Horario: "); scanf("%d",&dado.horario); inserirInicio(&lista, dado); break; case 3: printf("Voo: "); scanf("%d",&dado.voo); printf("Nome: "); scanf("%s",dado.nome); printf("Horario: "); scanf("%d",&dado.horario); inserirFinal(&lista, dado); break; case 4: printf("Voo: "); scanf("%d",&dado.voo); printf("Nome: "); scanf("%s",dado.nome); printf("Horario: "); scanf("%d",&dado.horario); printf("Posicao: "); scanf("%d",&pos); inserirPosicao(&lista, pos, dado); break;

case 5: listarInicioAoFim(&lista); break; case 6: listarFimAoInicio(&lista); break; case 7: printf("Posicao: "); scanf("%d",&pos); eliminarPosicao(&lista,pos);

printf("Elemento da Posicao %d\n",pos); case 8: printf(" Tamanho: %d\n", tamanho(lista)); break; case 9: destruir(&lista); printf("Lista Destruida!!!!\n"); break; } }while(opcao!=10); return 0; }