Buscar

ListaEncadeada exercicios

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;
}

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Outros materiais