TADS – Tipos Abstratos de Dados

Slides:



Advertisements
Apresentações semelhantes
Estruturas de Dados Listas Prof. Rodrigo Rocha
Advertisements

LISTAS Dilvan Moreira, parcialmente baseado em material do prof. Ricardo Campello.
ESTRUTURA DE DADOS Professor: Marcelo Mendes Turma: MBI-1
Aula T10 – BCC202 Listas – Parte 2 Túlio Toffolo www. decom. ufop
Listas Lineares Estrutura que permite representar um conjunto de dados de forma a preservar a relação de ordem linear. Uma lista linear é composta de nós,
Estruturas de Dados Árvores Binárias
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
Programação II Estruturas de Dados
TADS – Tipos Abstratos de Dados
Alocação Dinâmida de Memória
Listas duplamente encadeadas
Engenharia de Computação.
David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
David Menotti Estruturas de Dados I DECOM – UFOP
Pesquisa em Memória Primária
David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
Pesquisa em Memória Primária
Listas lineares Listas Lineares Fila Dupla Pilha Fila Saída restrita
AED – Algoritmos e Estruturas de Dados
Estruturas de Dados I Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Listas com Ponteiros Listas encadeadas Listas circulares.
Slides: Prof. João Fabro UTFPR - Curitiba
Slides: Prof. SIMÃO Revisão: Prof. João Fabro
Slides: Prof. João Fabro UTFPR - Curitiba
Listas Encadeadas.
Revisão da Linguagem C.
Universidade do Vale do Rio dos Sinos - São Leopoldo -
Listas Simplesmente Encadeadas
ALGORITMOS E ESTRUTURAS DE DADOS
Prof. Hilton Cardoso Marins Junior LISTA LINEAR
Algoritmos e Estruturas de Dados
Pesquisa em Memória Primária
PROGRAMAÇÃO ESTRUTURADA II
Denise Guliato Faculdade de Computação – UFU
Denise Guliato Faculdade de Computação – UFU
INTELIGÊNCIA ARTIFICIAL
Árvores Binárias de Pesquisa
TAD Pilha com Alocação Dinâmica de Memória
Implementação de FILAS com Alocação Dinâmica
Conceitos e implementação em C
Estrutura de dados II Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Estrutura de dados II Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação
Listas lineares Denise Guliato Faculdade de Computação – UFU
Denise Guliato Faculdade de Computação – UFU
Faculdade de Informática e Tecnologia de Pernambuco ESTRUTURA DE DADOS
Faculdade de Informática e Tecnologia de Pernambuco ESTRUTURA DE DADOS
Estruturas de Dados Aula 9: Listas (parte 1)
Estruturas de Dados PROFESSOR DIÓGENES FURLAN. Estruturas de Dados (ED) Programas operam sobre dados Dados são relacionados e possuem estrutura Como representar.
Estruturas de Dados Aula 11: TAD Pilha
Árvore Binária de Busca
Educação Profissional Técnica de Nível Médio Curso Técnico de Informática Disciplina: Estrutura de Dados Professor: Cheli dos S. Mendes da Costa Listas.
Filas. #define MAXFILA 100 typedef struct queue { int item [ MAXFILA]; int inic, fim; } fila; fila q;
Educação Profissional Técnica de Nível Médio Curso Técnico de Informática
Regras de escopo Escopo: trecho de codificação no qual o identificador possui significado Escopo de função: identificador válido dentro do trecho de uma.
Estruturas de Dados Aula 6: Cadeias de Caracteres
Prof. Alessandro Gonçalves
Profa. Juliana Mafra ESTRUTURA DE DADOS 30 de Setembro de 2009 Faculdade de Informática e Tecnologia de Pernambuco.
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.
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.
Estrutura de Dados Prof. André Cypriano M. Costa
Alocação Dinâmica Dilvan Moreira. Objetivos  Entender o que são e como usar:  Gerenciamento de Memória  Alocação Dinâmica em C.
Fundamentos de Programação 1 Slides 21 Prof.ª Fabiany e Prof. SIMÃO Linguagem C “Lista Encadeada”.
Fundamentos de Programação 1 Slides 22 Prof.ª Fabiany e Prof. SIMÃO Linguagem C “Lista Duplamente Encadeada - Projeto com vários Arquivos”.
Transcrição da apresentação:

TADS – Tipos Abstratos de Dados Exemplos: Lineares: Listas Pilhas Filas Não lineares: Árvores Grafos

Listas Lineares É uma sequência de elementos dispostos numa ordem estritamente linear, um após o outro, com operações de alto nível, tais como: acesso, inserção, exclusão de elementos etc. Listas sequenciais: implementadas através de vetores. Listas encadeadas: implementadas através de alocação dinâmica de memória.

Operações Primitivas Iniciar uma lista. Acessar o k-esimo nó. Inserir um nó após o k-esimo nó. Remover o k-esino nó. Determinar o número de nós. Localizar um determinado nó a partir de uma informação dele. etc.

Estrutura de dados para a lista: #define MAX 100 struct Lista { int qtde; char elemento[MAX]; };

Inicialização da lista: #define MAX 100 struct Lista { int qtde; char elemento[MAX]; }; void iniciaLista(struct Lista* lista) { lista->qtde = 0; }

Acesso ao k-esimo elemento: #define MAX 100 struct Lista { int qtde; char elemento[MAX]; }; // acessa o k-esimo elemento. Considera primeira posição = zero char acessa(struct Lista* lista, int k) { char dado; // se o índice k está fora da faixa permitida if(k<0 || k>(lista->qtde-1)) printf("ERRO: indice fora dos limites"); else dado = lista->elemento[k]; return dado; }

Inserção no final da lista: #define MAX 100 struct Lista { int qtde; char elemento[MAX]; }; void insereFinal(struct Lista* lista, char novoDado) { int i; // se o índice k está fora da faixa permitida if(lista->qtde > MAX-1) printf("ERRO: indice fora dos limites"); else { lista->elemento[lista->qtde] = novoDado; lista->qtde++; }

Inserção numa posição específica: #define MAX 100 struct Lista { int qtde; char elemento[MAX]; }; void inserePosicao(struct Lista* lista, int k, char novoDado) { int i; // se o índice k está fora da faixa permitida if(k<0 || k>(lista->qtde-1) || (lista->qtde > MAX-1)) printf("ERRO: indice fora dos limites"); else { for(i = lista->qtde; i > k; i--) lista->elemento[i] = lista->elemento[i-1]; lista->elemento[k] = novoDado; lista->qtde++; }

Exclusão de um elemento: #define MAX 100 struct Lista { int qtde; char elemento[MAX]; }; void exclui(struct Lista* lista, int k) { int i; // se o índice k está fora da faixa permitida if(k<0 || k>(lista->qtde-1)) printf("ERRO: indice fora dos limites"); else { for(i = k; i < lista->qtde; i++) lista->elemento[i] = lista->elemento[i+1]; lista->qtde--; }

Conversão para String: #define MAX 100 struct Lista { int qtde; char elemento[MAX]; }; char* extraiString(struct Lista* lista) { int i; char* p; p = (char*)malloc(lista->qtde+1); for(i = 0; i < lista->qtde; i++) { p[i] = lista->elemento[i]; } p[i] = '\0'; return p;

Teste: #define MAX 100 #include <stdio.h> #include <stdlib.h> struct Lista { int qtde; char elemento[MAX]; }; // protótipos... int main(int argc, char *argv[]) { char aux; struct Lista palavra; iniciaLista(&palavra); insereFinal(&palavra, 'a'); insereFinal(&palavra, 'r'); insereFinal(&palavra, 'o'); printf("%s \n", extraiString(&palavra)); aux = acessa(&palavra, 1); inserePosicao(&palavra, 2, 'm'); exclui(&palavra, 1); ... }