Advertisement
Guest User

Untitled

a guest
May 25th, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.00 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #define MAX 50 //TAMANHO DO VETOR DE 50 POSIÇÕES
  4.  
  5. typedef struct { // STRUCT PARA A INSERÇÃO DE DADOS NA LISTA
  6.     char nome[MAX]; // NOME DO TIPO (CHAR) DE 50 CARACTÉRES // [MAX] IGUAL A DEFINIÇÃO DE TAMNHO 50
  7.     int idade, id; // IDADE / ID AUTO_INCREMENT (INT)
  8. }usuario; // APELIDO "usuario" PARA A STRUCT PESSOA
  9.  
  10. typedef struct NODO{ //CRIAÇÃO DE PONTEIROS PARA APONTAR OS NÓS DA LISTA DUPLAMENTE ENCADEADA
  11.     usuario *dados; //PONTEIRO PARA AS INFORMAÇÕES DA STRUCT "usuario"
  12.     struct NODO *proximo; //Próximo elemento do NÓ
  13.     struct NODO *anterior; // Elemento anterior do NÓ
  14. };
  15.  
  16. typedef struct{ //CRIAÇÃO DA STRUCT PARA APONTAR O INÍCIO DE UM NOVO ELEMENTO
  17.     struct NODO *inicio //Ponteiro apontando para a nova alocação do nó
  18. }List; //apelido "List" para a lista duplamente encadeada em conjunto com a *NODO*
  19.  
  20. void init(List *L){ //INICIAÇÃO DA LISTA
  21.     L->inicio = NULL; //SE O INÍCIO DA LISTA ESTIVER NULL ENTAÕ INICIAMOS A LISTA
  22. }
  23.  
  24. int empty(List *L) { //CHECAR SE A LISTA ESTÁ VAZIA
  25.     if (L->inicio == NULL) // SE O INÍCIO DA LISTA ESTIVER = "NULL" a lista está vazia.
  26.         return 1; //LISTA VAZIA
  27.     else // CASO A CONDIÇÃO SEJA FALSA EXISTE ELEMENTO NA LISTA
  28.         return 0; //LISTA COM ELEMENTOS
  29. }
  30.  
  31. void insert(List *L, usuario *p){//ponteiro *L = struct lista, ponteiro *p = struct usuario;
  32.     struct NODO *no = (struct NODO*) malloc(sizeof(struct NODO));//chegcando o espaço na memória para inserir o dado
  33.     no->dados = p; //OS DADOS DESSE NÓ SERÃO ASSIMILADOS COM A STRUCT "usuario"
  34.     no->proximo = L->inicio; //O NÓ CRIADO SERÁ INSERIDO NO INÍCIO DA LISTA
  35.     L->inicio = no; //TODO INÍCIO SERÁ UM NOVO NÓ
  36. }
  37.  
  38. void imprimir(List *L){//IMPRIMIR A LISTA DAS INSERÇÕES
  39.    struct NODO *imprimi = L->inicio; //AQUI DIZ QUE O PONTEIRO IMPRIMIR IRÁ PARTIR DO INÍCIO DA FILA
  40.     while(imprimi!=NULL){//ELE IRÁ IMPRIMIR EQUANTO A LISTA NÃO FOR NULA
  41.         printf("ID: %d | NOME: %s | IDADE: %d\n",imprimi->dados->id,imprimi->dados->nome,imprimi->dados->idade);//DADOS QUE SERÃO IMPRIMIDOS NA TELA DO USUARIO
  42.         imprimi=imprimi->proximo;//AQUI É PARA PASSAR PARA O PRÓXIMO ATÉ O ELEMENTO NULO DA LISTA
  43.     }
  44. }
  45.  
  46.  
  47. main(){
  48.     int ctrl,c=0; //variável de controle para o while, variável c = AUTO_INCREMENT.
  49.     List L; //apelido L para a struct de inicio
  50.  
  51.     usuario p[MAX]; //apelido p para a struct usuario
  52.    
  53.     while(ctrl != 0){//opções do while, caso seja 0 o programa sai.
  54.        
  55.         system("CLS");
  56.         printf(
  57.         "Selecione opcao que deseja, veja nosso menu:|\n"
  58.         "---------------------------------------------\n"
  59.         "1 - Criar Lista      |\n"                                
  60.         "2 - Mostrar Lista    |\n"
  61.         "3 - Inserir Usuarios |\n"
  62.         "4 - Deletar Usuario  |\n"
  63.         "5 - Ordenar Idades   |\n"
  64.         "---------------------|\n"
  65.         "0 - SAIR DO PROGRAMA.|\n"
  66.         "----------------------\n"
  67.    
  68.         );
  69.        
  70.         scanf("%d", &ctrl);
  71.         switch (ctrl)
  72.         {
  73.  
  74.             case 0:
  75.                 system("CLS");
  76.                 printf("\n\nFIM DA LISTA\n\n");
  77.                 init(&L);
  78.                 getch();
  79.             break;
  80.             case 1:
  81.                 system("CLS");
  82.                 printf("          \n\nLISTA CRIADA\n\n Pressione uma tecla para voltar ao menu.");
  83.                 getch();
  84.             break;
  85.             case 2:
  86.                 imprimir(&L);
  87.                 getch();
  88.             break;
  89.             case 3:
  90.                 c++; //Incremento que controlará a ID da tabela
  91.                 p[c].id = c; // Atribuindo a ID para cada usuário
  92.                 printf("Digite seu primeiro nome: "); scanf("%s",&p[c].nome); //Guardar o primeiro nome
  93.                 printf("Digite sua idade: "); scanf("%d",&p[c].idade); //Guardar a idade
  94.                 insert(&L,&p[c]); //Inserindo os dados e usando o incremento como controlador dos usuários.
  95.             break;
  96.         }
  97.     }
  98. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement