Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<stdlib.h>
- #define MAX 50 //TAMANHO DO VETOR DE 50 POSIÇÕES
- typedef struct { // STRUCT PARA A INSERÇÃO DE DADOS NA LISTA
- char nome[MAX]; // NOME DO TIPO (CHAR) DE 50 CARACTÉRES // [MAX] IGUAL A DEFINIÇÃO DE TAMNHO 50
- int idade, id; // IDADE / ID AUTO_INCREMENT (INT)
- }usuario; // APELIDO "usuario" PARA A STRUCT PESSOA
- typedef struct NODO{ //CRIAÇÃO DE PONTEIROS PARA APONTAR OS NÓS DA LISTA DUPLAMENTE ENCADEADA
- usuario *dados; //PONTEIRO PARA AS INFORMAÇÕES DA STRUCT "usuario"
- struct NODO *proximo; //Próximo elemento do NÓ
- struct NODO *anterior; // Elemento anterior do NÓ
- };
- typedef struct{ //CRIAÇÃO DA STRUCT PARA APONTAR O INÍCIO DE UM NOVO ELEMENTO
- struct NODO *inicio //Ponteiro apontando para a nova alocação do nó
- }List; //apelido "List" para a lista duplamente encadeada em conjunto com a *NODO*
- void init(List *L){ //INICIAÇÃO DA LISTA
- L->inicio = NULL; //SE O INÍCIO DA LISTA ESTIVER NULL ENTAÕ INICIAMOS A LISTA
- }
- int empty(List *L) { //CHECAR SE A LISTA ESTÁ VAZIA
- if (L->inicio == NULL) // SE O INÍCIO DA LISTA ESTIVER = "NULL" a lista está vazia.
- return 1; //LISTA VAZIA
- else // CASO A CONDIÇÃO SEJA FALSA EXISTE ELEMENTO NA LISTA
- return 0; //LISTA COM ELEMENTOS
- }
- void insert(List *L, usuario *p){//ponteiro *L = struct lista, ponteiro *p = struct usuario;
- struct NODO *no = (struct NODO*) malloc(sizeof(struct NODO));//chegcando o espaço na memória para inserir o dado
- no->dados = p; //OS DADOS DESSE NÓ SERÃO ASSIMILADOS COM A STRUCT "usuario"
- no->proximo = L->inicio; //O NÓ CRIADO SERÁ INSERIDO NO INÍCIO DA LISTA
- L->inicio = no; //TODO INÍCIO SERÁ UM NOVO NÓ
- }
- void imprimir(List *L){//IMPRIMIR A LISTA DAS INSERÇÕES
- struct NODO *imprimi = L->inicio; //AQUI DIZ QUE O PONTEIRO IMPRIMIR IRÁ PARTIR DO INÍCIO DA FILA
- while(imprimi!=NULL){//ELE IRÁ IMPRIMIR EQUANTO A LISTA NÃO FOR NULA
- 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
- imprimi=imprimi->proximo;//AQUI É PARA PASSAR PARA O PRÓXIMO ATÉ O ELEMENTO NULO DA LISTA
- }
- }
- main(){
- int ctrl,c=0; //variável de controle para o while, variável c = AUTO_INCREMENT.
- List L; //apelido L para a struct de inicio
- usuario p[MAX]; //apelido p para a struct usuario
- while(ctrl != 0){//opções do while, caso seja 0 o programa sai.
- system("CLS");
- printf(
- "Selecione opcao que deseja, veja nosso menu:|\n"
- "---------------------------------------------\n"
- "1 - Criar Lista |\n"
- "2 - Mostrar Lista |\n"
- "3 - Inserir Usuarios |\n"
- "4 - Deletar Usuario |\n"
- "5 - Ordenar Idades |\n"
- "---------------------|\n"
- "0 - SAIR DO PROGRAMA.|\n"
- "----------------------\n"
- );
- scanf("%d", &ctrl);
- switch (ctrl)
- {
- case 0:
- system("CLS");
- printf("\n\nFIM DA LISTA\n\n");
- init(&L);
- getch();
- break;
- case 1:
- system("CLS");
- printf(" \n\nLISTA CRIADA\n\n Pressione uma tecla para voltar ao menu.");
- getch();
- break;
- case 2:
- imprimir(&L);
- getch();
- break;
- case 3:
- c++; //Incremento que controlará a ID da tabela
- p[c].id = c; // Atribuindo a ID para cada usuário
- printf("Digite seu primeiro nome: "); scanf("%s",&p[c].nome); //Guardar o primeiro nome
- printf("Digite sua idade: "); scanf("%d",&p[c].idade); //Guardar a idade
- insert(&L,&p[c]); //Inserindo os dados e usando o incremento como controlador dos usuários.
- break;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement