Baixe o app para aproveitar ainda mais
Prévia do material em texto
Lista Linear Simplesmente Encadeada Exemplo 1 – Lista não ordenada e com elementos repetidos #include <stdio.h> typedef struct no { int valor; struct no * prox; } TNo; void inserirInicio (TNo* *lista, int num){ TNo * novo; novo = (TNo *) malloc (sizeof(TNo)); // alocar nó novo->valor = num; if (*lista == NULL) { novo->prox = NULL; *lista = novo; } else { novo->prox = *lista; *lista = novo; } printf ("Insercao efetuada \n"); } void inserirFinal (TNo* *lista, int num){ TNo *novo, *aux; novo = (TNo *) malloc (sizeof(TNo)); // alocar nó novo->valor = num; novo->prox = NULL; if (*lista == NULL) { *lista = novo; } else { aux = *lista; while (aux->prox != NULL) { aux = aux->prox; } aux->prox = novo; } printf ("Insercao efetuada \n"); } � void listar (TNo * lista) { TNo * aux; if (lista == NULL) printf ("Lista vazia \n"); else { aux = lista; while (aux != NULL) { printf ("%i \n", aux->valor); aux = aux->prox; } } } void removerPrimeiro (TNo* *lista) { TNo * aux; if (*lista == NULL) printf ("Lista vazia \n"); else { aux = *lista; *lista = (*lista)->prox; free (aux); // desalocar nó printf ("Remoção efetuada \n"); } } void removerUltimo (TNo * *lista) { TNo *aux1, *aux2; if (*lista == NULL) printf ("Lista vazia \n"); else if ((*lista)->prox == NULL){ free (*lista); // desalocar nó (*lista) = NULL; } else { aux1 = *lista; aux2 = (*lista)->prox; while (aux2->prox != NULL) { aux1 = aux1->prox; aux2 = aux2->prox; } free (aux2); // desalocar nó aux1->prox = NULL; } } void removerTodos (TNo* *list) { TNo * aux; while (*list != NULL) { aux = *list; *list = (*list)->prox; free(aux); } } int main () { TNo * LSE = NULL; char op; int numero; do { printf ("1 - Inserir no inicio da lista \n"); printf ("2 - Inserir no final da lista \n"); printf ("3 - Remover primeiro da lista \n"); printf ("4 - Remover ultimo da lista \n"); printf ("5 - Remover elemento procurado \n"); printf ("6 - Exibir todos da lista \n"); printf ("7 - Sair do programa \n"); printf ("Informe a opcao: "); op = getchar (); fflush (stdin); switch (op) { case '1': printf ("Informe o valor: "); scanf ("%i", &numero); fflush (stdin); inserirInicio (&LSE,numero); break; case '2': printf ("Informe o valor: "); scanf ("%i", &numero); fflush (stdin); inserirFinal (&LSE,numero); break; case '3': removerPrimeiro (&LSE); break; case '4': removerUltimo (&LSE); break; case '5': printf ("Informe o valor a remover: "); scanf ("%i", &numero); fflush (stdin); // remover (&LSE, numero); /* REMOVER LEVANDO EM CONSIDERAÇÃO QUE PODEM EXITIR VALORES REPETIDOS */ break; case '6': listar (LSE); break; case '7': // removerTodos (&LSE); break; default: printf ("Opcao invalida \n"); } } while (op != '7'); return 0; }
Compartilhar