Fundamentos de Programação 1 Slides 22 Prof.ª Fabiany e Prof. SIMÃO Linguagem C “Lista Duplamente Encadeada - Projeto com vários Arquivos”.

Slides:



Advertisements
Apresentações semelhantes
IFTO ESTRUTURA DE DADOS AULA 05 Prof. Manoel Campos da Silva Filho
Advertisements

Aula T10 – BCC202 Listas – Parte 2 Túlio Toffolo www. decom. ufop
Um programa em C Bibliotecas Variáveis globais
Linguagem de Programação IV
Linguagem C Marco Antonio – Julho/2009. Instalação A IDE que será utilizada é o Eclipse, com plugin para C/C++. Descompacte no diretório.
Estruturas de Dados Árvores Binárias
Recursividade Prof. Rosana Palazon.
Listas encadeadas Prof. Rosana Palazon.
Algoritmos de manipulação de estruturas elementares de dados
Listas duplamente encadeadas
Programação II Estruturas de Dados
Programação II Estruturas de Dados
TADS – Tipos Abstratos de Dados
Listas duplamente encadeadas
David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
David Menotti Estruturas de Dados I DECOM – UFOP
Estruturas de Dados I Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Listas com Ponteiros Listas encadeadas Listas circulares.
Armazenamento de Dados em Arquivos
Slides Prof. Jean SIMÃO Revisão: Prof. João FABRO
Slides: Prof. João Fabro UTFPR - Curitiba
Linguagem C Estruturas de Seleção.
Armazenamento de Dados em Arquivos
Slides: Prof. SIMÃO Revisão: Prof. João Fabro
Slides: Prof. João Fabro UTFPR - Curitiba
Fundamentos de Programação 1
Lista Encadeada Circular Lista Duplamente Encadeada
Listas Encadeadas.
Linguagem de Programação
ALGORITMOS E ESTRUTURAS DE DADOS
exercícios listas encadeadas
Listas Encadeadas Raquel O. Prates, Luiz Chaimowicz, Jussara Almeida
Ameliara Freire Programação I Ameliara Freire
PROGRAMAÇÃO ESTRUTURADA II
Denise Guliato Faculdade de Computação – UFU
POO Ponto de Partida: PP Créditos: Prof. Marcelo Maia
© 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C (continuação)
Principais operações em Listas TPA Listas Simples Inserção no Final 1.void insereNofinalDaLista(Lista *l, Elemento e){ 2.Lista paux,p; 3. p.
Árvores Binárias de Pesquisa
TAD Pilha com Alocação Dinâmica de Memória
Implementação de FILAS com Alocação Dinâmica
Heap Sort TPA – Prof. Mateus Costa
Lista Encadeada Circular Lista Duplamente Encadeada
Listas lineares Denise Guliato Faculdade de Computação – UFU
Leandro Almeida  Parâmetros são utilizados em computação para possibilitar a construção de subprogramas genéricos.
Estruturas de Dados Aula 11: TAD Pilha
Educação Profissional Técnica de Nível Médio Curso Técnico de Informática
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação Versão: _01.
Prof. Alessandro Gonçalves
PCI- Estrutura Condicional Profa. Mercedes Gonzales Márquez.
Comando de Seleção switch
Programação de Computadores I – Arquivos
Profa. Maria Augusta Constante Puget
USP – ICMC – SSC SSC0300 2º Semestre 2015 Disciplina de Linguagem de Programação e Aplicações [ Eng. Elétrica / Eletrônica ] 1 Prof. Dr. Daniel Rodrigo.
Fundamentos de Programação 1 Slides 18 Prof. SIMÃO Jean Marcelo SIMÃO Linguagem C “Arquivos Seqüências ou de Texto ”.
Computação – Informática Aula N. 05 Prof. SIMÃO Jean Marcelo SIMÃO Linguagem C “Matrizes em C”
Fundamentos de Programação 1 Slides 19 Prof. SIMÃO Jean Marcelo SIMÃO Linguagem C “Arquivos Binários”.
Fundamentos de Programação 1 Slides 11 Prof. SIMÃO Jean Marcelo SIMÃO Linguagem C “ Struct, Union, Enum, Typedef ”
Fundamentos de Programação1 Aula N. 01 Prof. SIMÃO Jean Marcelo SIMÃO Linguagem C “Introdução e elementos principais”
Fundamentos de Programação 1 Aula N. 02 Prof. SIMÃO Jean Marcelo SIMÃO Linguagem C “Laços de Repetição em C”
Fundamentos de Programação 1 Slides C – Número 4 Prof. SIMÃO Jean Marcelo SIMÃO Estrutura de Dados Homogêneas “vetores de números e de caracteres”
Fundamentos de Programação 1 Slides 7 Prof. SIMÃO Jean Marcelo SIMÃO Linguagem C “Funções”
Fundamentos de Programação 1 Slides 21 Prof.ª Fabiany e Prof. SIMÃO Linguagem C “Lista Encadeada”.
Fundamentos de Programação 1 Slides 7 Prof. SIMÃO Jean Marcelo SIMÃO Linguagem C “Funções” 1.
Computação – Informática Aula N. 05 Prof. SIMÃO Jean Marcelo SIMÃO Linguagem C “Matrizes em C” 1.
Fundamentos de Programação 1 Slides 18 Prof. SIMÃO Jean Marcelo SIMÃO Linguagem C “Arquivos Seqüências ou de Texto ”. 1.
CES-11 ALGORITMOS E ESTRUTURAS DE DADOS Aulas Práticas – 2017
Fundamentos de Programação 1
Fundamentos de Programação 1
Função de buscar elemento na lista simplesmente encadeada
Transcrição da apresentação:

Fundamentos de Programação 1 Slides 22 Prof.ª Fabiany e Prof. SIMÃO Linguagem C “Lista Duplamente Encadeada - Projeto com vários Arquivos”.

#ifndef _LISTAENCADEADA_H_ #define _LISTAENCADEADA_H_ #include struct Elemento { char nome [100]; char rua [100]; char cidade [100]; char estado [2]; char cep [10]; struct Elemento* proximo; struct Elemento* anterior; }; struct Lista { struct Elemento* primeiro; struct Elemento* primeiro; struct Elemento* ultimo; struct Elemento* ultimo;}; char menu (); void inicia_lista (); void cadastra (); void mostra (); void mostraReverso (); void limpaLista (); #endif ListaEncadeada.h Projeto em Dev C++ struct elemento Nome Rua Cidade Estado CEP primeiro prox ant NULL Minha Lista NULL ultimo

void cadastra() { system ( "cls" ); printf ("\n \n \n"); register int i; struct Elemento* novo; novo = malloc ( 1 * sizeof (struct Elemento) ); novo->proximo = NULL; novo->proximo = NULL; novo->anterior = NULL; novo->anterior = NULL; printf ( "Nome: \n" ); fflush ( stdin ); gets ( novo->nome ); printf ( "Rua: \n" ); fflush ( stdin ); gets ( novo->rua ); printf ( "Cidade: \n" ); fflush ( stdin ); gets ( novo->cidade ); printf ( "Estado: \n" ); fflush ( stdin ); gets ( novo->estado ); printf ( "CEP: \n" ); fflush ( stdin ); gets ( novo->cep ); if ( NULL == MinhaLista.primeiro ) { MinhaLista.primeiro = novo; MinhaLista.ultimo = MinhaLista.primeiro; } else { MinhaLista.ultimo->proximo = novo; MinhaLista.ultimo->proximo = novo; novo->anterior = MinhaLista.ultimo; novo->anterior = MinhaLista.ultimo; MinhaLista.ultimo = novo; MinhaLista.ultimo = novo; } #include "ListaEncadeada.h" struct Lista MinhaLista; void inicia_lista () { MinhaLista.primeiro = NULL; MinhaLista.ultimo = NULL; } ListaEncadeada.c char menu () { printf ("\n \n \n"); char opcao; printf ( "(C)adastrar. \n" ); printf ( "(M)ostrar. \n" ); printf ( " Mostrar (R)eversamente. \n" ); printf ( " Mostrar (R)eversamente. \n" ); printf ( "(T)erminar. \n" ); fflush ( stdin ); scanf ( "%c", &opcao ); return opcao; }

#include "ListaEncadeada.h" struct Lista MinhaLista; void inicia_lista () { MinhaLista.primeiro = NULL; MinhaLista.ultimo = NULL; } ListaEncadeada.c struct elemento Nome Rua Cidade Estado CEP NULL primeiro prox ultimo NULL ant NULL Minha Lista

void cadastra() { system ( "cls" ); printf ("\n \n \n"); register int i; struct Elemento* novo; novo = malloc ( 1 * sizeof (struct Elemento) ); novo->proximo = NULL; novo->proximo = NULL; novo->anterior = NULL; novo->anterior = NULL; printf ( "Nome: \n" ); fflush ( stdin ); gets ( novo->nome ); printf ( "Rua: \n" ); fflush ( stdin ); gets ( novo->rua ); printf ( "Cidade: \n" ); fflush ( stdin ); gets ( novo->cidade ); printf ( "Estado: \n" ); fflush ( stdin ); gets ( novo->estado ); printf ( "CEP: \n" ); fflush ( stdin ); gets ( novo->cep ); if ( NULL == MinhaLista.primeiro ) { MinhaLista.primeiro = novo; MinhaLista.ultimo = MinhaLista.primeiro; } else { MinhaLista.ultimo->proximo = novo; MinhaLista.ultimo->proximo = novo; novo->anterior = MinhaLista.ultimo; novo->anterior = MinhaLista.ultimo; MinhaLista.ultimo = novo; MinhaLista.ultimo = novo; } NULL struct elemento Nome Rua Cidade Estado CEP prox ant NULL novo primeiro ultimo NULL Minha Lista

void cadastra() { if ( MinhaLista.primeiro == NULL) { MinhaLista.primeiro = novo; MinhaLista.ultimo = MinhaLista.primeiro; } else { MinhaLista.ultimo->proximo = novo; novo->anterior = MinhaLista.ultimo; MinhaLista.ultimo = novo; } struct elemento Nome Rua Cidade Estado CEP NULL prox ant NULL novo primeiro Minha Lista NULL ultimo

void cadastra() { system ( "cls" ); printf ("\n \n \n"); register int i; struct Elemento* novo; novo = malloc ( 1 * sizeof (struct Elemento) ); novo->proximo = NULL; novo->proximo = NULL; novo->anterior = NULL; novo->anterior = NULL; printf ( "Nome: \n" ); fflush ( stdin ); gets ( novo->nome ); printf ( "Rua: \n" ); fflush ( stdin ); gets ( novo->rua ); printf ( "Cidade: \n" ); fflush ( stdin ); gets ( novo->cidade ); printf ( "Estado: \n" ); fflush ( stdin ); gets ( novo->estado ); printf ( "CEP: \n" ); fflush ( stdin ); gets ( novo->cep ); if ( NULL == MinhaLista.primeiro ) { MinhaLista.primeiro = novo; MinhaLista.ultimo = MinhaLista.primeiro; } else { MinhaLista.ultimo->proximo = novo; MinhaLista.ultimo->proximo = novo; novo->anterior = MinhaLista.ultimo; novo->anterior = MinhaLista.ultimo; MinhaLista.ultimo = novo; MinhaLista.ultimo = novo; } struct elemento Nome Rua Cidade Estado CEP NULL prox ant NULL primeiro Minha Lista NULL struct elemento Nome Rua Cidade Estado CEP prox ant NULL novo ultimo

void cadastra() { if ( NULL == MinhaLista.primeiro ) { MinhaLista.primeiro = novo; MinhaLista.ultimo = MinhaLista.primeiro; } else { MinhaLista.ultimo->proximo = novo; novo->anterior = MinhaLista.ultimo; MinhaLista.ultimo = novo; } struct elemento Nome Rua Cidade Estado CEP prox ant NULL Minha Lista struct elemento Nome Rua Cidade Estado CEP NULL prox ant novo NULL primeiroultimo

void cadastra() { system ( "cls" ); printf ("\n \n \n"); register int i; struct Elemento* novo; novo = malloc ( 1 * sizeof (struct Elemento) ); novo->proximo = NULL; novo->proximo = NULL; novo->anterior = NULL; novo->anterior = NULL; printf ( "Nome: \n" ); fflush ( stdin ); gets ( novo->nome ); printf ( "Rua: \n" ); fflush ( stdin ); gets ( novo->rua ); printf ( "Cidade: \n" ); fflush ( stdin ); gets ( novo->cidade ); printf ( "Estado: \n" ); fflush ( stdin ); gets ( novo->estado ); printf ( "CEP: \n" ); fflush ( stdin ); gets ( novo->cep ); if ( NULL == MinhaLista.primeiro ) { MinhaLista.primeiro = novo; MinhaLista.ultimo = MinhaLista.primeiro; } else { MinhaLista.ultimo->proximo = novo; MinhaLista.ultimo->proximo = novo; novo->anterior = MinhaLista.ultimo; novo->anterior = MinhaLista.ultimo; MinhaLista.ultimo = novo; MinhaLista.ultimo = novo; } #include "ListaEncadeada.h" struct Lista MinhaLista; void inicia_lista () { MinhaLista.primeiro = NULL; MinhaLista.ultimo = NULL; } ListaEncadeada.c char menu () { printf ("\n \n \n"); char opcao; printf ( "(C)adastrar. \n" ); printf ( "(M)ostrar. \n" ); printf ( " Mostrar (R)eversamente. \n" ); printf ( " Mostrar (R)eversamente. \n" ); printf ( "(T)erminar. \n" ); fflush ( stdin ); scanf ( "%c", &opcao ); return opcao; }

struct elemento Nome Rua Cidade Estado CEP prox ant NULL struct elemento Nome Rua Cidade Estado CEP prox ant novo struct elemento Nome Rua Cidade Estado CEP prox ant NULL primeiro Minha Lista ultimo NULL Adicionar mais um elemento na lista:

void limpaLista () { struct Elemento* aux; aux = primeiro; while ( aux != NULL ) { primeiro = primeiro->proximo; free ( aux ) ; aux = primeiro; } MinhaLista.primeiro = NULL; MinhaLista.ultimo = NULL; } ListaEncadeada.c primeiro Minha Lista NULL aux struct elemento Nome Rua Cidade Estado CEP prox ant struct elemento Nome Rua Cidade Estado CEP prox ant struct elemento Nome Rua Cidade Estado CEP prox ant NULL ultimo

ListaEncadeada.c void mostra() { system ( "cls" ); printf ("\n \n \n"); struct Elemento* aux; aux = MinhaLista.primeiro; while ( aux != NULL ) { printf ( "%s \n", aux->nome ); printf ( "%s \n", aux->rua ); printf ( "%s \n", aux->cidade ); printf ( "%s \n", aux->estado ); printf ( "%s \n", aux->cep ); printf ( "\n"); aux = aux->proximo; } void mostraReverso() { system ( "cls" ); system ( "cls" ); printf ("\n \n \n"); printf ("\n \n \n"); struct Elemento* aux; struct Elemento* aux; aux = MinhaLista.ultimo; aux = MinhaLista.ultimo; while ( aux != NULL ) while ( aux != NULL ) { printf ( "%s \n", aux->nome ); printf ( "%s \n", aux->nome ); printf ( "%s \n", aux->rua ); printf ( "%s \n", aux->rua ); printf ( "%s \n", aux->cidade ); printf ( "%s \n", aux->cidade ); printf ( "%s \n", aux->estado ); printf ( "%s \n", aux->estado ); printf ( "%s \n", aux->cep ); printf ( "%s \n", aux->cep ); printf ( "\n"); printf ( "\n"); aux = aux->anterior; aux = aux->anterior; }}

struct elemento Nome Rua Cidade Estado CEP prox ant NULL struct elemento Nome Rua Cidade Estado CEP prox ant struct elemento Nome Rua Cidade Estado CEP prox ant primeiro Minha Lista ultimo NULL mostraReverso(); aux aux = aux->anterior; aux = aux->anterior;

#include #include "ListaEncadeada.h" int main (int argc, char *argv[]) { char escolha; inicia_lista (); for (;;) { escolha = menu (); switch ( escolha ) { case 'c': case 'C': { cadastra(); } break; case 'm': case 'M': { mostra(); } break; case 'r': case 'r': case 'R': { mostraReverso(); } break; case 'R': { mostraReverso(); } break; case 't': case 'T': { limpaLista(); system("Pause"); exit(0); } break; default : { printf("Opcao invalida. \n"); } } printf ("\n \n \n"); } system("PAUSE"); return 0; } main.c

Exercícios Re-elaborar a solução anterior sem utilizar variáveis ou ponteiros globais. Elaborar uma função para encontrar os dados de um elemento da lista dado o valor do campo nome. Elaborar uma função que permita eliminar um elemento da lista dado o valor do campo nome. Elaborar um solução que permita gravar e recuperar as informações da lista em arquivo.Elaborar um solução que permita gravar e recuperar as informações da lista em arquivo.