Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
ListaEncadeada_exercicios/src/exe01/main ListaEncadeada_exercicios/src/exe01/main.c /* * Matheus Pereira dos Santos * UTFPR - Cornélio Procópio * Engenharia de Computação * 2017 */ #include <stdio.h> #include <stdlib.h> #include "libs.h" int main() { Lista * l = inicializa(); l = insere(l, 1); l = insere(l, 12); l = insere(l, 5); l = insere(l, 17); l = insere(l, 3); printf("Lista original.\n"); imprime(l); Lista * l1 = inicializa(); l1 = separa(l, 5); if(l1 == NULL) { printf("Lista vazia\n"); exit(1); } printf("Lista 1\n"); imprime(l); printf("Lista 2\n"); imprime(l1); return 0; } ListaEncadeada_exercicios/src/exe01/libs.h #include "libs.c" typedef struct lista Lista; Lista * inicializa(void); Lista * insere(Lista * l, int n); void imprime(Lista * l); Lista * separa(Lista * l, int n); ListaEncadeada_exercicios/src/exe01/libs.c // Lista Encadeada Simples // Definição da Estrutura struct lista { int info; struct lista * prox; }; typedef struct lista Lista; // inicialização da lista Lista * inicializa(void) { return NULL; } // insere no inicio da lista Lista * insere(Lista * l, int n) { Lista * new = (Lista *)malloc(sizeof(Lista)); new->info = n; new->prox = l; return new; } // imprime a lista encadeada void imprime(Lista * l) { Lista * p = l; while(p != NULL) { printf("%d -> ", p->info); p = p->prox; } printf("NULL\n"); } // Divide a lista em dois a partir de um elemento 'n' informado por parâmetro Lista * separa(Lista * l, int n) { Lista * p = l; Lista * aux = NULL; if(p == NULL) return NULL; do { p = p->prox; aux = p; } while(p != NULL && p->info != n); p = aux->prox; aux->prox = NULL; // o ponteiro esta em cima do elemento 'n' da lista // atualiza para o próximo registro logo após 'n' return p; } ListaEncadeada_exercicios/src/exe04/main ListaEncadeada_exercicios/src/exe04/libs.h #include "libs.c" typedef struct lista Lista; Lista * inicializa(void); Lista * insere(Lista * l, float n); void imprime(Lista * l); Lista * retira_prefixo(Lista * l, int n); ListaEncadeada_exercicios/src/exe04/libs.c // estruturas struct lista { float info; struct lista * prox; }; typedef struct lista Lista; // inicializa a lista Lista * inicializa(void) { return NULL; } // insere na lista Lista * insere(Lista * l, float n) { Lista * new = (Lista *)malloc(sizeof(Lista)); new->info = n; new->prox = l; return new; } // imprime a lista void imprime(Lista * l) { Lista * p; for(p = l; p != NULL; p = p->prox) printf("[%.2f] -> ", p->info); printf("NULL\n"); } // remove 'n' elementos da lista Lista * retira_prefixo(Lista * l, int n) { if(l == NULL) return NULL; Lista * p = l; int cont = 0; cont = 1; for(p = l; p->prox != NULL && cont != n; cont++){ p = p->prox; } return p->prox; } ListaEncadeada_exercicios/src/exe04/main.c /* * Matheus Pereira dos Santos * Engenharia de Computação * UTFPR-Cornélio Procópio * 2017 */ #include <stdio.h> #include <stdlib.h> #include "libs.h" int main() { Lista * l = inicializa(); l = insere(l, 1.0); l = insere(l, 2.0); l = insere(l, 3.0); l = insere(l, 4.0); l = insere(l, 5.0); l = insere(l, 6.0); l = insere(l, 7.0); l = insere(l, 8.0); int n = 5; printf("lista inicial : \n"); imprime(l); printf("retirando os %d primeiros da lista: \n", n); if(n < 0){ printf("\nn invalido. Deve ser maior que ZERO\n"); exit(-1); } l = retira_prefixo(l, n); imprime(l); return 0; } ListaEncadeada_exercicios/src/exe03/main ListaEncadeada_exercicios/src/exe03/libs.h #include "libs.c" typedef struct lista Lista; Lista * inicializa(void); Lista * insere(Lista * l, int n); void imprime(Lista * l); Lista * constroi(int n, int * v); ListaEncadeada_exercicios/src/exe03/libs.c // Estruturas struct lista { int info; struct lista * prox; }; typedef struct lista Lista; // inicializa a lista Lista * inicializa(void) { return NULL; } // Insere na lista Lista * insere(Lista * l, int n) { Lista * new = (Lista *)malloc(sizeof(Lista)); new->info = n; new->prox = l; return new; } // imprime a lista void imprime(Lista * l) { Lista * p; for(p = l; p != NULL; p = p->prox) printf("%d -> ", p->info); printf("NULL\n"); } // constroi uma lista a partir de um vetor Lista * constroi(int n, int * v) { Lista * l = NULL; int i; for(i = n-1; i >= 0; i--) l = insere(l, v[i]); return l; } ListaEncadeada_exercicios/src/exe03/main.c /* * Matheus Pereira dos Santos * Engenharia de Computação * UTFPR - Cornélio Procópio * 2017 */ #include <stdio.h> #include <stdlib.h> #include "libs.h" int main() { Lista * lista; int v[5] = {3, 8, 1, 7, 2}; lista = constroi(5, v); printf("Lista formada: "); imprime(lista); return 0; } ListaEncadeada_exercicios/src/exe02/main ListaEncadeada_exercicios/src/exe02/libs.h #include "libs.c" typedef struct lista Lista; Lista * inicializa(void); Lista * insere(Lista * l, float n); void imprime(Lista * l); Lista * concatena(Lista * l1, Lista * l2); ListaEncadeada_exercicios/src/exe02/libs.c // Estrutura da lista encadeada struct lista { float info; struct lista * prox; }; typedef struct lista Lista; // inicializa a lista Lista * inicializa(void) { return NULL; } // insere na lista Lista * insere(Lista * l, float n) { Lista * new = (Lista *)malloc(sizeof(Lista)); new->info = n; new->prox = l; return new; } // imprime a lista encadeada void imprime(Lista * l) { Lista *p; for(p = l; p != NULL; p = p->prox) printf("%f -> ", p->info); printf("NULL\n"); } // função que concatena duas listas Lista * concatena(Lista * l1, Lista * l2) { if(l1 == NULL || l2 == NULL) return NULL; Lista * p; p = l1; do { p = p->prox; }while(p->prox != NULL); p->prox = l2; return l1; } ListaEncadeada_exercicios/src/exe02/main.c /* * Matheus Pereira dos Santos * Engenharia de Computação * UTFPR - Cornélio Procópio * 2017 */ #include <stdio.h> #include <stdlib.h> #include "libs.h" int main() { Lista * l1 = inicializa(); Lista * l2 = inicializa(); l1 = insere(l1, 1.0); l1 = insere(l1, 4.5); l1 = insere(l1, 2.1); l2 = insere(l2, 9.8); l2 = insere(l2, 7.2); printf("Lista 1: "); imprime(l1); printf("Lista 2: "); imprime(l2); printf("Lista 1 + Lista 2: "); l1 = concatena(l1, l2); imprime(l1); return 0; }
Compartilhar