Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
#include <stdio.h> #include <stdlib.h> typedef struct elemento { int dado; struct elemento *proximo; }t_elemento; typedef struct lista { t_elemento *inicio; t_elemento *fim; }t_lista; t_lista* criarLista() { t_lista *lista = (t_lista *) malloc(sizeof(t_lista)); lista->inicio = NULL; lista->fim = NULL; return lista; } void insereInicio(int valor, t_lista *lista) { t_elemento *novoNoInicio = (t_elemento *) malloc(sizeof(t_elemento)); novoNoInicio->dado = valor; novoNoInicio->proximo = (*lista).inicio; lista->inicio = novoNoInicio; if(lista->fim == NULL) { //Se a lista estuver vazia o final da lista recebe o novo dado lista->fim = novoNoInicio; } } void insereFinal(int valor, t_lista *lista) { t_elemento *novoNoFim = (t_elemento *) malloc(sizeof(t_elemento)); novoNoFim->dado = valor; novoNoFim->proximo = NULL; if(lista->inicio == NULL) { //Se a lista estiver vazia eu coloco meu novo nó no inicio lista->inicio = novoNoFim; }else { lista->fim->proximo = novoNoFim; } lista->fim = novoNoFim; } void imprimir(t_lista *lista) { t_elemento *atual = lista->inicio; while(atual != NULL) { printf("%d\n", atual->dado); atual = atual->proximo; } printf("Fim da lista\n"); } int main(void) { int N; t_lista *lista = criarLista(); while(1) { scanf("%d", &N); if(N == 0) { break; } insereInicio(N, lista); } imprimir(lista); return 0; }
Compartilhar