- Estruturas e aplicações

Tamanho: px
Começar a partir da página:

Download "- Estruturas e aplicações"

Transcrição

1 1 MCTA028 Programação Estruturada - Estruturas e aplicações Material preparado a partir de slides dos profs. Jesús Mena-Chalco e Fabrício Olivetti Luiz Rozante 3Q-2018

2 Estruturas (=registros) 2

3 Linguagem C: Tipos de dados Tipos de dados primários. Tipos de dados derivados. Tipos definidos pelo usuário. (*) Fonte: 3

4 Para definir e usar um tipo de usuário Em C, structs permitem definir tipos de dados como uma composição de tipos já existentes. O uso de tipos de usuário exige três passos : Definição Declaração Acesso

5 Definição de tipo de usuário Podemos definir ( dizer como é ) um tipo novo usando tipos já existentes (definidos ou pré-definidos). Forma geral: struct nome_tipo { nome_tipo_1 nome_membro_1; nome_tipo_2 nome_membro_2;... nome_tipo_k nome_membro_k; };

6 Declaração de variáveis de tipo de usuário Declaramos uma variável de tipo definido (de usuário) da mesma forma que declaramos uma de tipo pré-definido. struct nome_tipo nome_var;

7 Definição e declaração de tipos de usuário com a cláusula typedef (redefinidor de nomes de tipo). Forma geral: typedef struct { nome_tipo_1 nome_membro_1; nome_tipo_2 nome_membro_2;... nome_tipo_k nome_membro_k; }nome_tipo_novo; definição nome_tipo_novo nome_var; declaração

8 Acesso a variáveis de tipo de usuário O acesso aos membros (campos) de variáveis declaradas a partir de tipo de usuário (definido) é feito através do operador de acesso: ponto (. ), seta (' -> '), se ponteiro para estrutura (registro).

9 Estruturas 9

10 1. #include <stdio.h> struct ALUNO { //Definição da estrutura 4. float nota; 5. int cod; 6. char conceito; 7. }; 1. void main() { 2. int i; 3. struct ALUNO jose, ana; // Declara variáveis 4. struct ALUNO turma[7]; // do tipo ALUNO 5. jose.nota = 7.0; // Acessa membros da 6. jose.cod = 1212; // variável jose 7. if (jose.nota < 7.0) { 8. jose.conceito = R ; 9. } 10. else { 11. jose.conceito = A ; 12. } for (i=0 ; i<=6 ; i++) { 15. turma[i].cod = i; turma[i].nota = 0.0; 1. } 2. }

11 1. #include <stdio.h> 2. struct FICHA { //Definição da estrutura FICHA 3. char nome[40]; 4. int cod; 5. float salario; 6. }; 1. void le_cadastro(); 1. /* declara um vetor tipo FICHA */ 2. struct FICHA cadastro[100]; 1. void main() { le_cadastro(); } 1. void le_cadastro() { 2. int i; 3. for (i=0 ; i<=99 ; i++) { 4. printf( Nome = ); 5. gets(cadastro[i].nome); 6. printf( \n ); 7. printf( Código = ); 8. scanf( %d\n, &cadastro[i].cod); printf( \n ); 1. printf( Salário = ); scanf( %f\n, &cadastro[i].salario); 1. } 2. } 1)

12 1. #include <stdio.h> 2. #include <conio.h> 3. struct DATA { //Definição da estrutura DATA 4. int dia; 5. char mes[10]; 6. int ano; 7. }; 1. struct VENDA { //Definição da estrutura VENDA 2. int cod; 3. int qtde; 4. float preco; 5. struct DATA dt_venda; 6. }; 1. void impr_venda(); 2. void impr_vendas(); 2) 1. /* inicialização da variável x tipo VENDA */ 2. struct VENDA x={12,10,23.4,{5, Mar,2002}}; 1. /* declaração de uma matriz tipo VENDA */ 2. struct VENDA reg_venda[1000]; 1. void main() { 2. impr_venda(); 3. impr_vendas(); 4. }

13 24. void impr_venda() { 25. printf( Cod= %d\n, x.cod); 26. printf( Qtde= %d\n, x.qtde); 27. printf( Preço= %f\n, x.preco); 28. printf( Data da venda = %d/%s/%d, 29. x.dt_venda.dia, 30. x.dt_venda.mes, 31. x.dt_venda.ano); 32. } 24. void impr_vendas() { 25. int i; 26. for (i=0 ; i<=999 ; i++) { 27. printf( Cod = %d\n,reg_venda[i].cod); 28. printf( Qtde= %d\n,reg_venda[i].qtde); 29. printf( Preço=%f\n,reg_venda[i].preco); 30. printf( Data da venda = %d/%s/%d, 31. reg_venda[i].dt_venda.dia, 32. reg_venda[i].dt_venda.mes, 33. reg_venda[i].dt_venda.ano); 34. } 35. } 2)

14 14 Estruturas Operador de acesso indireto

15 Tipos abstratos de dados (TAD) Para resolver um problema é necessário escolher uma abstração da realidade, em geral mediante a definição de um conjunto de dados que representa a situação real A seguir, deve ser escolhida a forma de representar esses dados A escolha da representação dos dados é determinada, entre outras, pelas operações a serem realizadas sobre os dados 15

16 Exemplo de TAD: Listas Lineares Sequência de zero ou mais itens x1, x 2,..., x n, na qual x i é de um determinado tipo e n representa o tamanho da lista linear Sua principal propriedade estrutural envolve as posições relativas dos itens em uma dimensão Assumindo n >= 1, x 1 é o primeiro item da lista e x n é o último item da lista x i precede x i+1 para i = 1, 2,..., n 1 x i sucede x i-1 para i = 2, 3,..., n o elemento x i é dito estar na i-ésima posição da lista 16

17 Listas Lineares Muitas aplicações Principal aplicação: representação interna de conjuntos. 17

18 Listas Lineares: Implementações Pode ser implementada de diferentes maneiras Estática todo o espaço de memória a ser utilizado (para armazenar os itens) é reservado (alocado) no início da execução do programa ou módulo esse espaço de memória permanece reservado durante toda a execução do programa, independente de estar sendo efetivamente utilizado ou não Dinâmica o espaço de memória a ser utilizado (para armazenar os itens) pode ser reservado (alocado) no decorrer da execução de um programa ou módulo, quando for efetivamente necessário o espaço reservado pode ser liberado durante a execução do programa, quando não for mais necessário 18

19 Listas Lineares - Estática Podem dispor os seus elementos de maneira Seqüencial: os itens ficam, necessariamente, em sequência (um ao lado do outro) na memória Encadeada: os itens não estão, necessariamente, em posições de memória adjacentes (sequência lógica ou virtual) 19

20 Listas Lineares Estática Seqüencial Os itens da lista são armazenados em posições contíguas de memória A lista pode ser percorrida em qualquer direção A inserção de um novo item pode ser realizada após o último item com custo constante O(1) A inserção de um novo item no meio da lista requer um deslocamento de todos os itens localizados após o ponto de inserção O(n) Retirar um item do início da lista requer um deslocamento de itens para preencher o espaço deixado vazio O(n) Índices 1 2 n MaxTam Itens X 1 X 2... X n... 20

21 Listas Lineares Estática Seqüencial (TAD) Para a definição de um TAD, o conjunto de operações a ser definido depende de cada aplicação Exemplos: 1. Criar uma lista linear vazia 2. Inserir um novo item imediatamente após o i-ésimo item 3. Retirar o i-ésimo item 4. Localizar o i-ésimo item para examinar e/ou alterar o conteúdo de seus componentes. 5. Combinar duas ou mais listas lineares em uma lista única 6. Partir uma lista linear em duas ou mais listas 7. Fazer uma cópia da lista linear 8. Ordenar os itens da lista em ordem ascendente ou descendente, de acordo com alguns de seus componentes 9. Pesquisar a ocorrência de um item com um valor particular em algum componente 21

22 Listas Lineares Estática Seqüencial Vantagens/Desvantagens Vantagens acesso direto indexado a qualquer elemento da lista tempo constante para acessar o i-ésimo item - dependerá somente do índice Desvantagens movimentação quando o item é eliminado/inserido tamanho máximo pré-estimado Diante disso, quando usar? listas pequenas inserção/remoção no fim da lista tamanho máximo bem definido 22

23 Listas Lineares Estática Seqüencial Programa em C #include <stdio.h> #include <stdlib.h> #define TAM_MAX 5 #define NULO int insere (int lista[], int *n, int chave); int remove_final (int lista[], int *n); int remove_inicio (int lista[], int *n); int imprime (int lista[], int n); char menu(void); main() { } int lista[tam_max]; int num_atual = 0;... MC-1424 Algoritmos e Estruturas de Dados I - 2 trimestre de

24 Listas Lineares Estática Seqüencial Função: Inserir no final int insere (int lista[], int *n, int chave) { if (*n == TAM_MAX) return (NULO); lista[(*n)++] = chave; } return (0); 24

25 Listas Lineares Estática Seqüencial Função: Remover do final int remove_final (int lista[], int *n) { if (*n == 0) return (NULO); } return (lista[--(*n)]); 25

26 Listas Lineares Estática Seqüencial Função: Remover do início int remove_inicio (int lista[], int *n) { int i, primeiro; if (*n == 0) return (NULO); primeiro = lista[0]; for (i=1; i < *n; i++) lista[i-1]= lista[i]; (*n)--; } return primeiro; Complexidade: (?) 26

27 Listas Lineares Estática Seqüencial Função: Imprimir lista int imprime (int lista[], int n) { int i; } if (n == 0) printf ("Lista vazia!\n"); else { printf ("%d elementos na lista\n", n); for (i=0; i < n; i++) printf ("Elemento %d = %d\n", i+1, lista[i]); } return (0); 27

28 Listas Lineares Estática Seqüencial Função: Busca lista Exercício: Como seria a função de busca na lista? 28

29 Listas Lineares Estática Seqüencial Função: Busca lista Exercício: Como seria a função de busca na lista? int busca (int lista[], int n, int chave){ int i, achou = 0; } } if (n == 0) return(achou); else { for(i = 0;i < n; i++){ if(lista[i] == chave) achou = 1; return (achou); 29

30 Algumas implementações possíveis Na forma Dinâmica como ponteiros de nós, a lista pode ser implementada de várias formas, por exemplo: Lista Encadeada Simples Lista com Descritor Lista Duplamente Encadeada 30

31 Lista Dinâmica Encadeada Numa lista encadeada, um espaço de memória é alocado para cada novo elemento (item) inserido na estrutura O espaço total de memória é proporcional ao número de elementos Não há garantia de que os elementos da lista ocuparão espaço de memória contíguo não há acesso direto aos elementos Para percorrer todos os elementos da lista é necessário guardar o seu encadeamento Armazena-se, junto com a informação de cada elemento, um ponteiro para o próximo elemento da lista Prim Info1 Info2 Info3 NULL 31

32 Lista Dinâmica Encadeada Os itens da lista são nós com um dos componentes destinado a guardar o endereço do nó sucessor Ex: L = anta, cabra, gato, pato, rato onde cada nó é: Diz-se que cada nó aponta para o próximo nó O próximo do último nó é um apontador para NULL É necessário um apontador para o primeiro nó da lista 32

33 Lista Dinâmica Encadeada Estrutura auto-referenciada Exemplo: o nó de uma lista para armazenar números inteiros pode ser representado em C struct { int info; struct no *proximo; }no; Estrutura auto-referenciada possui um campo que é um ponteiro para uma próxima estrutura do mesmo tipo Essa estrutura representa um nó da lista, e a estrutura de lista encadeada é representada pelo ponteiro para o primeiro elemento 33

34 Lista Dinâmica Encadeada TAD Para a definição de um TAD, o conjunto de operações a ser definido depende de cada aplicação Exemplos: 1. Criar uma lista vazia 2. Verificar se a lista está vazia 3. Inserir um novo item no início da lista 4. Inserir um novo item no final da lista 5. Retirar um item da lista no começo 6. Retirar um item da lista no fim 7. Buscar um item na lista 8. Imprimir os itens da lista 9. Determinar o comprimento da lista 10. Liberar a lista... 34

35 Lista Dinâmica Encadeada Simples Análise de algumas operações Função de inserção no início da lista Para cada elemento inserido é necessário alocar dinamicamente a memória necessária Nota importante: o ponteiro que representa a lista deve ter seu valor atualizado Prim Novo Info1 Info2 Info3 NULL 35

36 Lista Dinâmica Encadeada Simples Análise de algumas operações Função que retira um elemento da lista Duas situações tem que ser consideradas (a) Remoção no início da lista (b) Remoção no meio da lista Prim (a) Info1 Info2 Info3 Prim NULL (b) Info1 Info2 Info3 NULL 36

37 Lista encadeada (código): tipos e ponteiros 1. #include <stdio.h> 2. #include <stdlib.h> 3. typedef struct { 4. int valor; 5. struct nodo *prox; 6. }nodo; 7. nodo *prim; 8. nodo *p; 9. nodo *q; 10. void cria_lista_vazia(); 11. void verifica_se_lista_vazia(); 12. void inclui_inicio(int x); 13. void inclui_fim(int x); 14. void imprime_lista(); 15. void remove_inicio(); 16. void remove_fim();

38 Código: main 1. int main(int argc, char** argv) { 2. cria_lista_vazia(); 3. printf("\n"); 4. verifica_se_lista_vazia(); 5. inclui_inicio(10); 6. inclui_inicio(12); 7. inclui_fim(30); 8. inclui_fim(40); 9. remove_inicio(); 10. remove_fim(); 11. imprime_lista(); 12. return (EXIT_SUCCESS); 13.}

39 Código: cria lista vazia 1. void cria_lista_vazia(){ 2. prim = NULL; 3. printf("criei lista vazia\n"); 4. }

40 Código: verifica se é vazia 1. void verifica_se_lista_vazia(){ 2. if (prim == NULL){ 3. printf("a lista está lista vazia\n"); 4. printf("prim = %p \n", prim); 5. } 6. else { 7. printf("a lista NÃO está vazia"); 8. printf("prim = %p \n", prim); 9. } 10.}

41 Código: inserir no início 1. void inclui_inicio(int x){ 2. if ((p = (struct nodo*) malloc(sizeof(nodo))) == NULL) { 3. printf(" nao consegui alocar memoria para p\n"); 4. exit(0); 5. } 6. p->prox = prim; 7. p->valor = x; 8. prim = p; 9. }

42 Código: inserir no fim 1. void inclui_fim(int x){ 2. if ((p = (struct nodo*) malloc(sizeof(nodo))) == NULL) { 3. printf(" nao consegui alocar memoria para p\n"); 4. exit(0); 5. } 6. q = prim; 7. while (q->prox!= NULL){ 8. q = q->prox; 9. } 10. p->valor = x; 11. q->prox = p; 12. p->prox = NULL; 13.}

43 Código: excluir no começo 1. void remove_inicio(){ 2. p = prim->prox; 3. free(prim); 4. prim = p; 5. }

44 Código: excluir no fim 1. void remove_fim(){ 2. q = prim->prox; 3. while (q->prox!= NULL){ 4. p = q; 5. q = q->prox; 6. } 7. free(q); 8. p->prox = NULL; 9. }

45 Código: imprimir 1. void imprime_lista(){ 2. p = prim; 3. do { 4. printf(" %d ", p->valor); 5. p = p->prox; 6. }while (p->prox!= NULL); 7. printf(" %d ", p->valor); 8. printf("\n"); 9. }

46 Comparação entre as estratégias Estática Seqüencial vs. Dinâmica Encadeada Quando é melhor utilizar uma implementação ou outra? Principais características que devem ser consideradas A implementação estática (array) requer a especificação do tamanho máximo da lista em tempo de compilação. Se não for possível especificar o tamanho máximo que a lista pode atingir, seria mais adequado escolher a implementação dinâmica A implementação estática pode desperdiçar espaço. A implementação dinâmica requer espaço para os ponteiros em cada célula. Em diferentes circunstâncias um método pode acabar utilizando mais espaço do que o outro 46

47 Comparação entre as estratégias Estática Seqüencial vs. Dinâmica Encadeada Quando é melhor utilizar uma implementação ou outra? Principais características que devem ser consideradas Algumas operações são mais custosas em uma implementação e não na outra Inserção e deleção no início tempo constante na implementação dinâmica encadeada, mas tempo proporcional ao número de elementos na implementação estática No final tempo constante na implementação estática, mas tempo proporcional ao número de elementos na implementação dinâmica encadeada 47

48 Lista Dinâmica Encadeada Alguns Problemas Caracteriza-se por formar um encadeamento simples entre os elementos Cada elemento armazena um ponteiro para o próximo elemento da lista Problemas dessa estratégia Não temos como percorrer a lista em ordem inversa de maneira eficiente Dificulta a retirada de um elemento da lista. Mesmo se tivermos o ponteiro para o elemento que se deseja retirar, temos que percorrer a lista para encontrar o elemento anterior Solução Lista com descritor? Lista Dinâmica Duplamente Encadeada 48

49 Outro exemplo de TAD: Pilhas 49

50 Pilhas É a estrutura de dados mais utilizada em programação, sendo inclusive implementada diretamente pelo hardware da maioria das máquinas modernas A idéia fundamental da pilha é que todo o acesso a seus elementos é feito por meio do seu topo É um conceito semelhante a qualquer tipo de pilha: pratos, livros, CDs, etc 50

51 Pilhas (Stacks) Estrutura de dados com a característica LIFO LIFO: Last-In First-Out O último a entrar é o primeiro a sair Funcionamento O primeiro item inserido na pilha fica no fundo, sendo o último a ser removido Todos os itens inseridos na pilha são colocados em cima dos itens anteriores O último item inserido na pilha é o que está no topo, sendo o primeiro a ser removido 51

52 Pilhas (Stacks) Para que serve? Para modelar situações em que é preciso guardar para mais tarde vários elementos, e lembrar sempre do último elemento armazenado (LIFO) 52

53 Pilhas (animação) MC-1424 Algoritmos e Estruturas de Dados I - 2 trimestre de

54 Características de Pilhas Dados somente podem ser colocados no topo da pilha Dados somente podem ser removidos do topo da pilha Dados somente podem ser removidos do fundo da pilha se existe somente um elemento na pilha Dados não podem ser removidos do meio da pilha sem antes remover todos os itens anteriores (do topo) 54

55 Operações de uma Pilha Principais Empilha (push) Desempilha (pop) Auxiliares Topo (peek) Vazia (isempty) Cheia (isfull) Procura (search) 55

56 Implementação de Pilhas Lista Estática Seqüencial (Array) Fácil de implementar Tamanho limitado Lista Dinâmica Encadeada Implementação mais complexa Sem limitação de tamanho (memória do computador) Memória alocada dinamicamente Listas encadeadas que se insere e remove do início são pilhas 56

57 Pilha em Lista Estática Seqüencial PILHA - lista estática seqüencial que implementa pilha o elemento 0 será definido como o fundo da pilha topo da pilha: TOPO é o índice que indica a 1a. posição livre da pilha P pilha vazia: TOPO = 0 restrição: tamanho máximo 3 4o. elem. 3o. elem. 2o. elem. 1o. elem

58 Pilha em C Exemplo (1) #define MAX 50 typedef struct pilha { int n; int vet[max]; } tipopilha; // Prototipos das funcoes tipopilha *cria(void); void push(tipopilha *p, int v), libera(tipopilha *p); int pop(tipopilha *p), vazia(tipopilha *p); 58

59 Pilha em C Exemplo (1) // Funcao para criar uma pilha de dados tipopilha *cria(void){ tipopilha *p = (tipopilha*) malloc(sizeof(tipopilha)); p->n = 0; // Inicializa pilha com zero elementos return p; } // empilhamento (push) de elementos void push(tipopilha *p, int v){ if (p->n == MAX) { printf("capacidade da pilha estourou.\n"); exit(1);} /*Insere elemento na proxima posicao livre*/ p->vet[p->n] = v; p->n++; } MC-1424 Algoritmos e Estruturas de Dados I - 2 trimestre de

60 Pilha em C Exemplo (1) // Funcao para desempilhamento (pop) de elementos int pop(tipopilha *p){ int v; if (vazia(p)) { printf("tipopilha vazia.\n"); return -1; } v = p->vet[p->n-1]; p->n--; return v; } // Funcao que verifica se uma pilha esta vazia int vazia(tipopilha *p){ return (p->n == 0); } MC-1424 Algoritmos e Estruturas de Dados I - 2 trimestre de

61 Pilha em C Exemplo (1) /* Funcao que libera espaco em memoria alocado para a pilha */ void libera(tipopilha *p) { free(p); } 61

62 Pilhas em lista encadeada Topo agora é um ponteiro para o topo da pilha Pilha vazia: Topo= NULL não possui restrição de tamanho máximo 62

63 Pilha em lista encadeada empilha desempilha novo elemento 63

64 Aplicações de Pilhas Aplicações diretas Histórico de páginas visitadas em um navegador Web Desfazer uma seqüência de ações em um editor de textos (Ctrl+Z) Realizar cálculos usando a notação polonesa (por exemplo, calculadoras HP) Chamada de procedimentos em Sistemas Operacionais Aplicações indiretas Estrutura de dados auxiliar para algoritmo 64

65 Exemplo de aplicação Calculadora pós-fixada Notação para expressões aritméticas infixa = operador entre os operandos (1-2)*(4+5) pós-fixa = operador após operandos * pré-fixa = operador antes dos operandos * Exemplo: calculadora HP científica usa notação pós-fixa 65

66 Exemplo de aplicação Calculadora pós-fixada Avaliação de expressões aritméticas pós-fixadas: cada operando é empilhado numa pilha de valores quando se encontra um operador desempilha-se o número apropriado de operandos realiza-se a operação devida empilha-se o resultado Exemplo: avaliação da expressão * Tipo de dados abstratos (TDA) 66

67 Tipos abstratos de dados (TAD) A idéia é encapsular (esconder) de quem usa um determinado tipo a forma concreta com que ele foi implementado Para isso, separa-se a declaração e a implementação do TAD em dois arquivos: - NomeDoTAD.h : com a declaração - NomeDoTAD.c : com a implementação O programa ou outros TADs que utilizam o seu TAD devem dar um #include no arquivo.h 67

68 Tipos abstratos de dados (TAD) Exemplo: Vamos implementar a estrutura de um TAD em ContaBancaria, com os campos número e saldo onde os clientes podem fazer as seguintes operações: Iniciar uma conta com um número e saldo inicial Depositar um valor Sacar um valor Imprimir o saldo 68

69 Tipos abstratos de dados (TAD) ContaBancaria.h /* definição do tipo */ typedef struct { int numero; double saldo; } ContaBancaria; /* declaração das funções */ void Inicializa(ContaBancaria* conta, int numero, double saldo); void Deposito (ContaBancaria* conta, double valor); void Saque (ContaBancaria* conta, double valor); void Imprime (ContaBancaria conta); 69

70 Tipos abstratos de dados (TAD) ContaBancaria.c #include <stdio.h> #include "Contabancaria.h" void Inicializa(ContaBancaria* conta, int numero, double saldo) { (*conta).numero = numero; (*conta).saldo = saldo; } void Deposito (ContaBancaria* conta, double valor) { (*conta).saldo += valor; } void Saque (ContaBancaria* conta, double valor) { (*conta).saldo -= valor; } void Imprime (ContaBancaria conta) { printf("numero: %d\n", conta.numero); printf("saldo: %f\n", conta.saldo); } MC-1424 Algoritmos e Estruturas de Dados I - 2 trimestre de

71 Tipos abstratos de dados (TAD) int main (int argc, char **argv) { ContaBancaria conta1; Inicializa(&conta1, , ); printf("\nantes da movimentacao:\n "); Imprime(conta1); Deposito(&conta1, 50.00); Saque(&conta1, 70.00); printf("\ndepois da movimentacao:\n "); Imprime (conta1); } 71

72 72 Atividade em aula Implementar uma TAD para pilha em lista encadeada com as seguintes operações : 1. Criar uma pilha vazia 2. Empilhamento 3. Desempilhamento 4. Imprime a pilha

73 73

74 Pilha em C (arquivo pilha.h) Ex2 typedef struct { int matricula; char nome[20]; } t_pilha; void empilha(t_pilha aluno); t_pilha desempilha(); t_pilha notopo(); int cheia(); int vazia(); 74

75 Pilha em C (arquivo pilha.c) Ex2 #include "pilha.h #define TAMMAX 3 #define VAZIA -1 int topo = VAZIA; t_pilha pilha[tammax]; void empilha(t_pilha aluno){ pilha[++topo] = aluno; } t_pilha desempilha() { return pilha[topo--]; } t_pilha notopo() { return pilha[topo]; } int cheia() { return topo+1 == TAMMAX; } int vazia() { return topo == VAZIA; } MC-1424 Algoritmos e Estruturas de Dados I - 2 trimestre de

Tipos Abstratos de Dados

Tipos Abstratos de Dados Tipos Abstratos de Dados Prof. Jussara Almeida Derivado das transparências do Algoritmos e Estrutura de Dados Algoritmo: Sequência de ações executáveis para a solução de um determinado tipo de problema

Leia mais

Tipos Abstratos de Dados

Tipos Abstratos de Dados Tipos Abstratos de Dados Prof. Rui Jorge Tramontin Jr. UDESC - Rui J. Tramontin Jr. 1 Índice Introdução Definição de Tipos Abstratos de Dados Exemplos de TADs Implementação de TADs Implementação em C Exemplo

Leia mais

Aula 12 Tipo Abstrato de Dados. Prof. Me. Sérgio Carlos Portari Jr UEMG Campus de Frutal

Aula 12 Tipo Abstrato de Dados. Prof. Me. Sérgio Carlos Portari Jr UEMG Campus de Frutal Aula 12 Tipo Abstrato de Dados Prof. Me. Sérgio Carlos Portari Jr UEMG Campus de Frutal Representação dos Dados Os dados podem estar representados (estruturados) de diferentes maneiras Normalmente, a escolha

Leia mais

Estruturas de Dados. Módulo 11 Pilhas. 9/8/2005 (c) Dept. Informática - PUC-Rio 1

Estruturas de Dados. Módulo 11 Pilhas. 9/8/2005 (c) Dept. Informática - PUC-Rio 1 Estruturas de Dados Módulo 11 Pilhas 9/8/2005 (c) Dept. Informática - PUC-Rio 1 Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora Campus (2004)

Leia mais

Tipos Abstratos de Dados

Tipos Abstratos de Dados Tipos Abstratos de Dados Prof. Túlio Toffolo http://www.toffolo.com.br BCC202 Aula 03 Algoritmos e Estruturas de Dados I Qual a diferença entre um algoritmo e um programa? Algoritmos e Estruturas de Dados

Leia mais

Listas (Parte 1) Túlio Toffolo BCC202 Aula 09 Algoritmos e Estruturas de Dados I

Listas (Parte 1) Túlio Toffolo  BCC202 Aula 09 Algoritmos e Estruturas de Dados I Listas (Parte 1) Túlio Toffolo tulio@toffolo.com.br www.toffolo.com.br BCC202 Aula 09 Algoritmos e Estruturas de Dados I Ementa do Curso Tipos Abstratos de Dados / Alocação Dinâmica Análise de Algoritmos

Leia mais

Introdução a Programação. Tipos Abstratos de Dados Implementando Pilha e Fila

Introdução a Programação. Tipos Abstratos de Dados Implementando Pilha e Fila Introdução a Programação Tipos Abstratos de Dados Implementando Pilha e Fila Abstração Abstração é o processo ou resultado de generalização por redução do conteúdo da informação de um conceito ou fenômeno

Leia mais

Listas Lineares. Livro Projeto de Algoritmos Nívio Ziviani Capítulo 3 Seção 3.1

Listas Lineares. Livro Projeto de Algoritmos Nívio Ziviani Capítulo 3 Seção 3.1 Listas Lineares Elerson R. S. Santos elerson@dcc.ufmg.br Livro Projeto de Algoritmos Nívio Ziviani Capítulo 3 Seção 3.1 http://www2.dcc.ufmg.br/livros/algoritmos/ Listas Lineares Uma das formas mais simples

Leia mais

BCC202 - Estrutura de Dados I

BCC202 - Estrutura de Dados I BCC202 - Estrutura de Dados I Aula 08: Listas (Parte 1) ASN Universidade Federal de Ouro Preto, UFOP Departamento de Computação, DECOM Material elaborado com base nos slides do Prof. Reinaldo Fortes (curso

Leia mais

Estruturas de Dados Aula 11: TAD Pilha

Estruturas de Dados Aula 11: TAD Pilha Estruturas de Dados Aula 11: TAD Pilha Fontes Bibliográficas Livros: Projeto de Algoritmos (Nivio Ziviani): Capítulo 3; Introdução a Estruturas de Dados (Celes, Cerqueira e Rangel): Capítulo 10; Estruturas

Leia mais

Universidade Estadual Paulista Júlio de Mesquita Filho UNESP

Universidade Estadual Paulista Júlio de Mesquita Filho UNESP Introdução à Computação II AULA 16 BCC Noturno - EMA896115B Prof. Rafael Oliveira olivrap@gmail.com Universidade Estadual Paulista Júlio de Mesquita Filho UNESP Rio Claro 2014 (Sem 2) Estruturas de Dados

Leia mais

SCC Algoritmos e Estruturas de Dados I

SCC Algoritmos e Estruturas de Dados I SCC 202 - Algoritmos e Estruturas de Dados I TAD Pilha Lembrem...TADs são tipos definidos em termos de seu comportamento e não de sua representação (que pode variar na busca de eficiência) 12/8/2010 Pilha

Leia mais

Pilhas e Filas. Nádia Félix e Hebert Coelho

Pilhas e Filas. Nádia Félix e Hebert Coelho Pilhas e Filas Nádia Félix e Hebert Coelho Vários slides foram adaptados de Nina Edelwais e Renata Galante Estrutura de Dados Série de Livros Didáticos - Informática - UFRGS Pilhas e filas Listas lineares

Leia mais

Estrutura de Dados. Carlos Eduardo Batista. Centro de Informática - UFPB

Estrutura de Dados. Carlos Eduardo Batista. Centro de Informática - UFPB Estrutura de Dados Carlos Eduardo Batista Centro de Informática - UFPB bidu@ci.ufpb.br Listas e Filas Estruturas de Dados 2 Estrututuras de dados lineares Pilhas (stack) Estrutura de dados onde a inserção

Leia mais

Listas Lineares. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR

Listas Lineares. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR Listas Lineares David Menotti DInf UFPR Listas Lineares Uma das formas mais simples de interligar os elementos de um conjunto. Estrutura em que as operações inserir, retirar e localizar são definidas.

Leia mais

INF1007 Programação 2 9 Pilhas. (c) Dept. Informática - PUC-Rio 1

INF1007 Programação 2 9 Pilhas. (c) Dept. Informática - PUC-Rio 1 INF1007 Programação 2 9 Pilhas (c) Dept. Informática - PUC-Rio 1 Tópicos Principais Introdução Interface do tipo pilha Exemplo de uso: verificação de expressões Implementação de pilha com lista encadeada

Leia mais

INF 1007 Programação II

INF 1007 Programação II INF 1007 Programação II Aula 13 Pilhas Edirlei Soares de Lima Pilha Uma pilha é uma estrutura de dados dinâmica na qual novos elementos são sempre inseridos no topo da pilha e acessados

Leia mais

A regra de acesso aos dados de uma fila é a seguinte: O primeiro elemento que entra (na fila) é o primeiro que sai (FIFO first in, first out).

A regra de acesso aos dados de uma fila é a seguinte: O primeiro elemento que entra (na fila) é o primeiro que sai (FIFO first in, first out). Fila Algumas aplicações impõem regras de acesso às informações armazenados em estruturas de dados, restringindo como os dados são inseridos e removidos da estrutura. A fila, também conhecida como QUEUE,

Leia mais

LISTAS LINEARES. Estrutura de Dados

LISTAS LINEARES. Estrutura de Dados LISTAS LINEARES Lista Linear Definição: seqüência de zero ou mais elementos a 1,a 2,...,a n sendo a i elementos de um mesmo tipo n o tamanho da lista linear Propriedade fundamental: os elementos têm relações

Leia mais

Introdução a Programação. Listas Encadeadas

Introdução a Programação. Listas Encadeadas Introdução a Programação Listas Encadeadas Tópicos da Aula Hoje aprenderemos que existem, além de vetores, estruturas de dados dinâmicas que podem armazenar coleções de dados Estruturas Dinâmicas e Vetores

Leia mais

Programação II. Listas Encadeadas (Linked Lists) Bruno Feijó Dept. de Informática, PUC-Rio

Programação II. Listas Encadeadas (Linked Lists) Bruno Feijó Dept. de Informática, PUC-Rio Programação II Listas Encadeadas (Linked Lists) Bruno Feijó Dept. de Informática, PUC-Rio Vetores vs Estruturas Dinâmicas Vetores (arrays): Ocupa um espaço contíguo de memória Permite acesso randômico

Leia mais

REVISÃO DE PILHAS E FILAS. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

REVISÃO DE PILHAS E FILAS. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos REVISÃO DE PILHAS E FILAS Vanessa Braganholo Estruturas de Dados e Seus Algoritmos PILHAS E FILAS São tipos especiais de listas com disciplina restrita de acesso Acesso Consulta Inserção Remoção Disciplina

Leia mais

BCC202 - Estrutura de Dados I

BCC202 - Estrutura de Dados I BCC202 - Estrutura de Dados I Aula 03: Tipos Abstratos de Dados (TADs) Reinaldo Fortes Universidade Federal de Ouro Preto, UFOP Departamento de Ciência da Computação, DECOM Website: www.decom.ufop.br/reifortes

Leia mais

Métodos Computacionais. Listas Encadeadas

Métodos Computacionais. Listas Encadeadas Métodos Computacionais Listas Encadeadas Vetores Declaração de vetor implica na especificação de seu tamanho Não se pode aumentar ou diminuir tamanho Outra alternativa no uso de vetores é alocar dinamicamente

Leia mais

Conceitos. Pilhas e Filas. Conceitos e Implementação em linguagem C. Maria Adriana Vidigal de Lima. Março

Conceitos. Pilhas e Filas. Conceitos e Implementação em linguagem C. Maria Adriana Vidigal de Lima. Março Conceitos e Implementação em linguagem C Março - 2009 1 Conceitos 2 Organização dos dados Em determinadas aplicações, as pilhas e filas representam estruturas de dados importantes, nas quais seus elementos

Leia mais

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

Computadores Digitais 2. Prof. Rodrigo de Souza Couto Computadores Digitais 2 Linguagens de Programação DEL-Poli/UFRJ Prof. Miguel Campista Tópicos Listas Encadeadas Introdução às listas encadeadas Manipulação de elementos Implementações recursivas Listas

Leia mais

Estruturas de Dados. Módulo 12 - Filas. 9/8/2005 (c) Dept. Informática - PUC-Rio 1

Estruturas de Dados. Módulo 12 - Filas. 9/8/2005 (c) Dept. Informática - PUC-Rio 1 Estruturas de Dados Módulo 12 - Filas 9/8/2005 (c) Dept. Informática - PUC-Rio 1 Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora Campus (2004)

Leia mais

Listas Ligadas (Encadeadas) Listas Simplesmente Encadeadas

Listas Ligadas (Encadeadas) Listas Simplesmente Encadeadas Listas Ligadas (Encadeadas) Matrizes são estruturas de dados muito úteis fornecidas nas linguagens de programação. No entanto, elas têm pelo menos duas limitações: 1- Seu tamanho tem que ser conhecido

Leia mais

Pilhas e Filas. Livro Projeto de Algoritmos Nívio Ziviani Capítulo 3 Seção 3.2 e 3.3

Pilhas e Filas. Livro Projeto de Algoritmos Nívio Ziviani Capítulo 3 Seção 3.2 e 3.3 Pilhas e Filas Livro Projeto de Algoritmos Nívio Ziviani Capítulo 3 Seção 3.2 e 3.3 http://www2.dcc.ufmg.br/livros/algoritmos/ PILHAS Pilha É uma lista linear em que todas as inserções, retiradas e, geralmente,

Leia mais

PONTEIROS E LISTAS. Kalinka Regina Lucas Jaquie Castelo Branco

PONTEIROS E LISTAS. Kalinka Regina Lucas Jaquie Castelo Branco PONTEIROS E LISTAS Kalinka Regina Lucas Jaquie Castelo Branco kalinka@icmc.usp.br ALOCAÇÃO DINÂMICA DE MEMÓRIA Pode-se assumir que as variáveis declaradas na cláusula variável do pseudo-código do algoritmo

Leia mais

SCC Algoritmos e Estruturas de Dados I

SCC Algoritmos e Estruturas de Dados I SCC 202 - Algoritmos e Estruturas de Dados I TAD Pilha Sequencial Estática e Encadeada Dinâmica 17 e 19/8/2010 Exercício: Implementação da pilha sequencial e estática Declaração em C escondendo a ED do

Leia mais

Instituto de C. Filas. Luis Martí Instituto de Computação Universidade Federal Fluminense -

Instituto de C. Filas. Luis Martí Instituto de Computação Universidade Federal Fluminense - Instituto de C Filas Luis Martí Instituto de Computação Universidade Federal Fluminense lmarti@ic.uff.br - http://lmarti.com Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução

Leia mais

Alocação de Memória. Lucas Ferrari de Oliveira Professor Adjunto Universidade Federal do Paraná (UFPR)

Alocação de Memória. Lucas Ferrari de Oliveira Professor Adjunto Universidade Federal do Paraná (UFPR) Alocação de Memória Linguagem de Programação Estruturada 1 Alocação dinâmica e ponteiros Lucas Ferrari de Oliveira Professor Adjunto Universidade Federal do Paraná (UFPR) Sumario Introdução Alocação Estática

Leia mais

INF 1620 P2-01/11/03 Questão 1 Nome:

INF 1620 P2-01/11/03 Questão 1 Nome: INF 1620 P2-01/11/03 Questão 1 Considere a implementação de uma lista encadeada para armazenar as notas dos alunos de uma turma dada pelo tipo abaixo: struct lista { char nome[81]; int mat; float p1, p2,

Leia mais

Instituto de C. Linguagem C: Listas. Luis Martí Instituto de Computação Universidade Federal Fluminense -

Instituto de C. Linguagem C: Listas. Luis Martí Instituto de Computação Universidade Federal Fluminense - Instituto de C Linguagem C: Listas Luis Martí Instituto de Computação Universidade Federal Fluminense lmarti@ic.uff.br - http://lmarti.com Listas Encadeadas Definição Funções básicas Tópicos Principais

Leia mais

Algoritmos e Estruturas de Dados II IEC013

Algoritmos e Estruturas de Dados II IEC013 Algoritmos e Estruturas de Dados II IEC013 Revisão: Listas Encadeadas Prof. César Melo Todos os créditos reservados ao professor Leandro Galvão Listas Encadeadas Listas encadeadas ou listas ligadas representam

Leia mais

Lista: conceito, representação e algoritmos

Lista: conceito, representação e algoritmos Lista: conceito, representação e algoritmos SCC0202 Algoritmos e Estruturas de Dados I Prof. Thiago A. S. Pardo Problema Imaginem a situação da automação de uma biblioteca Todos os livros devem ser cadastrados

Leia mais

Pilha. SCC-202 Algoritmos e Estruturas de Dados I. Lucas Antiqueira

Pilha. SCC-202 Algoritmos e Estruturas de Dados I. Lucas Antiqueira Pilha SCC-202 Algoritmos e Estruturas de Dados I Lucas Antiqueira Pilha O que é? Para que serve? 2 Problema: chamada de sub-rotinas Rotina A 1 print A 2 call C 3 call B 4 call D 5 return Rotina B 1 call

Leia mais

Algoritmos e Estruturas de dados

Algoritmos e Estruturas de dados Algoritmos e Estruturas de dados Listas Encadeadas Prof. Dr. Fábio Rodrigues de la Rocha (Listas Encadeadas) 1 / 21 Definição: Anteriormente estudamos listas encadeadas que foram implementadas como vetores

Leia mais

INF1007: Programação 2 8 Listas Encadeadas. (c) Dept. Informática - PUC-Rio 1

INF1007: Programação 2 8 Listas Encadeadas. (c) Dept. Informática - PUC-Rio 1 INF1007: Programação 2 8 Listas Encadeadas (c) Dept. Informática - PUC-Rio 1 Tópicos Principais Motivação Listas encadeadas Implementações recursivas Listas de tipos estruturados (c) Dept. Informática

Leia mais

Algoritmos e Estruturas de Dados I

Algoritmos e Estruturas de Dados I Algoritmos e Estruturas de Dados I Aula 09 Revisão + Simulado Prof. Jesús P. Mena-Chalco jesus.mena@ufabc.edu.br 1Q-2019 1 Vetores 2 Vetores 3 Vetores vetor 4 Vetores... vetor... 5 Ponteiros 6 Processo

Leia mais

Módulo 10 Listas Encadeadas

Módulo 10 Listas Encadeadas Estruturas de Dados Módulo 10 Listas Encadeadas 9/8/2005 (c) Dept. Informática - PUC-Rio 1 Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora Campus

Leia mais

Carlos Eduardo Batista. Centro de Informática - UFPB

Carlos Eduardo Batista. Centro de Informática - UFPB Estrutura de Dados Carlos Eduardo Batista Centro de Informática - UFPB bidu@ci.ufpb.br Pilhas e listas Estruturas de Dados 2 Ordenação (Classificação) Rearranjar um conjunto de objetos Ordem ascendente

Leia mais

Listas Encadeadas. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR

Listas Encadeadas. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR Listas Encadeadas David Menotti Algoritmos e Estruturas de Dados II DInf UFPR Listas Encadeadas Características: Tamanho da lista não é pré-definido Cada elemento guarda quem é o próximo Elementos não

Leia mais

Atividade de laboratório listas encadeadas simples

Atividade de laboratório listas encadeadas simples Atividade de laboratório listas encadeadas simples 1. Estrutura básica Uma lista encadeada simples é uma estrutura de dados composta de uma seqüência de estruturas elementares chamadas nós. Cada nó contém

Leia mais

Aula 11 Pilha Dinâmica. prof Leticia Winkler

Aula 11 Pilha Dinâmica. prof Leticia Winkler Aula 11 Pilha Dinâmica prof Leticia Winkler 1 Pilha Dinâmica (Dynamic Stack) Pilha implementada através de uma lista linear encadeada. É uma lista linear encadeada em que as operações de inserção e retirada

Leia mais

Algoritmos e Estruturas de Dados II IEC013

Algoritmos e Estruturas de Dados II IEC013 Algoritmos e Estruturas de Dados II IEC013 TAD, Pilhas e Filas Prof. César Melo Todos os créditos ao Prof. Leandro Galvão TAD: Definição SE programa = definição de um tipo de dados + operação sobre dados

Leia mais

ASSOCIAÇÃO PARAIBANA DE ENSINO RENOVADO FACULDADE PARAIBANA DE PROCESSAMENTO DE DADOS ESTRUTURA DE DADOS

ASSOCIAÇÃO PARAIBANA DE ENSINO RENOVADO FACULDADE PARAIBANA DE PROCESSAMENTO DE DADOS ESTRUTURA DE DADOS ASSOCIAÇÃO PARAIBANA DE ENSINO RENOVADO FACULDADE PARAIBANA DE PROCESSAMENTO DE DADOS ESTRUTURA DE DADOS INTRODUÇÃO O que é uma Estrutura de Dados (ED)?? Tipos de Dados? Estruturas de Dados e? Tipos Abstratos

Leia mais

Pilhas e Filas Encadeadas. Algoritmos e Estruturas de Dados I

Pilhas e Filas Encadeadas. Algoritmos e Estruturas de Dados I Pilhas e Filas Encadeadas Algoritmos e Estruturas de Dados I Pilha Lista linear: pilha Represente graficamente o funcionamento da pilha, representando a pilha vazia, a entrada e a saída de elementos Quais

Leia mais

Aula 1 Conceitos Básicos

Aula 1 Conceitos Básicos Aula 1 Conceitos Básicos Elerson R. S. Santos elerson@dcc.ufmg.br Livro Projeto de Algoritmos Capítulo 1 @ DCC/UFMG O que é um algoritmo? O que é um programa? O que é um TAD? Algoritmos e Estrutura de

Leia mais

Estruturas de Dados. Introdução Definição de Ponteiros Declaração de Ponteiros em C Manipulação de Ponteiros em C

Estruturas de Dados. Introdução Definição de Ponteiros Declaração de Ponteiros em C Manipulação de Ponteiros em C Estruturas de Dados Revisão de Ponteiros Prof. Ricardo J. G. B. Campello Sumário Introdução Definição de Ponteiros Declaração de Ponteiros em C Manipulação de Ponteiros em C Operações Ponteiros e Arranjos

Leia mais

08/08/2011. Pilha. SCC0202 Algoritmos e Estruturas de Dados I. Prof. Thiago A. S. Pardo. Pilha. O que é? Para que serve?

08/08/2011. Pilha. SCC0202 Algoritmos e Estruturas de Dados I. Prof. Thiago A. S. Pardo. Pilha. O que é? Para que serve? Pilha SCC0202 Algoritmos e Estruturas de Dados I Prof. Thiago A. S. Pardo Pilha O que é? Para que serve? 2 1 Rotina A 1 print A 2 call C 3 call B 4 call D Rotina B 1 call C 2 print B 3 call D 4 call C

Leia mais

Programação: Vetores

Programação: Vetores Programação de Computadores I Aula 09 Programação: Vetores José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2011-1 1/62 Motivação Problema Faça um programa que leia

Leia mais

INF 1620 P2-23/10/04 Questão 1 Nome:

INF 1620 P2-23/10/04 Questão 1 Nome: INF 1620 P2-23/10/04 Questão 1 Considere um tipo abstrato de dados para representar uma disciplina da PUC-Rio, com as seguintes informações: Nome da disciplina: com até 50 caracteres Código da disciplina:

Leia mais

Aula 05: Listas Encadeadas. Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP

Aula 05: Listas Encadeadas. Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP Aula 05: Listas Encadeadas Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP Listas Encadeadas Características: Tamanho da lista não é pré-definido Cada elemento guarda quem é o próximo Elementos

Leia mais

S U M Á R I O. Definição de Estrutura de Dados. Vetores. Listas Ligadas. Pilhas. Filas

S U M Á R I O. Definição de Estrutura de Dados. Vetores. Listas Ligadas. Pilhas. Filas ESTRUTURA DE DADOS DEBORAH FERREIRA S U M Á R I O Definição de Estrutura de Dados 1 Vetores 2 Listas Ligadas 4 Pilhas 6 Filas 8 D E F I N I Ç Ã O D E E S T R U T U R A D E D A D O S Estruturas de dados

Leia mais

PCC104 - Projeto e Análise de Algoritmos

PCC104 - Projeto e Análise de Algoritmos PCC104 - Projeto e Análise de Algoritmos Marco Antonio M. Carvalho (baseado nas notas de aula do prof. Túlio A. M. Toffolo) Departamento de Computação Instituto de Ciências Exatas e Biológicas Universidade

Leia mais

REVISÃO DE C. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

REVISÃO DE C. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos REVISÃO DE C Vanessa Braganholo Estruturas de Dados e Seus Algoritmos REVISÃO DE C Ponteiros Alocação dinâmica de memória Recursão INSTITUTO DE COMPUTAÇÃO - UFF 2 PONTEIROS PONTEIROS C permite o armazenamento

Leia mais

Estrutura de dados - Listas Encadeadas

Estrutura de dados - Listas Encadeadas Estrutura de dados - Listas Encadeadas Prof. Leonardo Cabral da Rocha Soares leonardo.soares@newtonpaiva.br Centro Universitário Newton Paiva 25 de abril de 2019 Estrutura de dados - Listas Encadeadas

Leia mais

Estruturas de Dados Filas

Estruturas de Dados Filas Estruturas de Dados Filas Roteiro Introdução Definição de Fila (Queue) Aplicações Operações sobre Fila Implementação de Fila Com vetores Com listas encadeadas Exercícios Introdução Estamos acostumados

Leia mais

Prof. Jesus José de Oliveira Neto

Prof. Jesus José de Oliveira Neto Prof. Jesus José de Oliveira Neto É uma das estruturas de dados mais simples A idéia fundamental da pilha é que todo o acesso a seus elementos é feito através do seu topo. Assim, quando um elemento novo

Leia mais

Estrutura de Dados e Algoritmos e Programação e Computadores II. Aula 4: Listas Estáticas e Dinâmicas

Estrutura de Dados e Algoritmos e Programação e Computadores II. Aula 4: Listas Estáticas e Dinâmicas Estrutura de Dados e Algoritmos e Programação e Computadores II Aula 4: Listas Estáticas e Dinâmicas Listas Estáticas: com Vetores Dinâmicas: Listas Ligadas (com ponteiros) Variáveis e Métodos de Controle:

Leia mais

SCC 202 Algoritmos e Estruturas de Dados I. Pilhas (Stacks) (implementação dinâmica)

SCC 202 Algoritmos e Estruturas de Dados I. Pilhas (Stacks) (implementação dinâmica) SCC 202 Algoritmos e Estruturas de Dados I Pilhas (Stacks) (implementação dinâmica) Operações alocação encadeada dinâmica typedef struct elem{ tipo_info info; struct elem *lig; tipo_elem; typedef struct{

Leia mais

Ponteiros e Tabelas. K&R: Capítulo 5

Ponteiros e Tabelas. K&R: Capítulo 5 Ponteiros e Tabelas K&R: Capítulo 5 Ponteiros e Tabelas Ponteiros e endereços Ponteiros e argumentos de funções Ponteiros e tabelas Alocação dinâmica de memória Aritmética de ponteiros Tabelas de ponteiros

Leia mais

void push(int i){ if (num<max) vet[num++]=i; else { printf(">>> Erro: overflow na pilha!!!\n"); printf("%d nao foi empilhado!!!

void push(int i){ if (num<max) vet[num++]=i; else { printf(>>> Erro: overflow na pilha!!!\n); printf(%d nao foi empilhado!!! Estruturas de Dados Lista 2: soluções J. L. Rangel 1. Suponha que uma pilha é representada através de um vetor vet e de um inteiro num. As declarações podem ser #define MAX 100 int vet[max], num; Escreva

Leia mais

Lista Encadeada (Linked List)

Lista Encadeada (Linked List) Lista Encadeada (Linked List) As listas ou listas encadeadas são a estrutura de dados mais simples concebível excetuando-se naturalmente os arrays. Listas encadeadas nada mais são que uma seqüência de

Leia mais

BCC202 - Estrutura de Dados I

BCC202 - Estrutura de Dados I BCC202 - Estrutura de Dados I Aula 10: Pilhas Reinaldo Fortes Universidade Federal de Ouro Preto, UFOP Departamento de Ciência da Computação, DECOM Website: www.decom.ufop.br/reifortes Email: reifortes@iceb.ufop.br

Leia mais

Lista: conceito, representação e algoritmos

Lista: conceito, representação e algoritmos Alocação seqüencial vs. encadeada Lista: conceito, representação e algoritmos Alocação seqüencial: elementos são alocados em seqüência; seqüência física Baseado no material de Thiago A. S. Pardo Algoritmos

Leia mais

12. Filas Interface do tipo fila

12. Filas Interface do tipo fila 12. Filas W. Celes e J. L. Rangel Outra estrutura de dados bastante usada em computação é a fila. Na estrutura de fila, os acessos aos elementos também seguem uma regra. O que diferencia a fila da pilha

Leia mais

Fila. Algoritmos e Estruturas de Dados I

Fila. Algoritmos e Estruturas de Dados I Fila Algoritmos e Estruturas de Dados I Fila O que é? Para que serve? 2 Biblioteca Problema: automação de uma biblioteca Todos os livros devem ser cadastrados O sistema deve informar se um livro está disponível

Leia mais

Listas Estáticas. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich. *Baseado no material do Prof.

Listas Estáticas. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich. *Baseado no material do Prof. Listas Estáticas SCC0202 - Algoritmos e Estruturas de Dados I Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista http://www.icmc.usp.br/~paulovic paulovic@icmc.usp.br Instituto de

Leia mais

Lista: conceito, representação e algoritmos

Lista: conceito, representação e algoritmos Lista: conceito, representação e algoritmos SCC0502 Algoritmos e Estruturas de Dados I Prof. Thiago A. S. Pardo Problema Imaginem a situação da automação de uma biblioteca Todos os livros devem ser cadastrados

Leia mais

Pilha. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich. *Baseado no material do Prof. Gustavo Batista

Pilha. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich. *Baseado no material do Prof. Gustavo Batista Pilha SCC0202 - Algoritmos e Estruturas de Dados I Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista http://www.icmc.usp.br/~paulovic paulovic@icmc.usp.br Instituto de Ciências

Leia mais

SCC122 - Estruturas de Dados. Lista Estática Seqüencial

SCC122 - Estruturas de Dados. Lista Estática Seqüencial SCC122 - Estruturas de Dados Lista Estática Seqüencial Lista Uma lista é uma estrutura que armazena elementos de forma alinhada, ou seja, com elementos dispostos um após o outro. Ex.: Listas de nomes,

Leia mais

Estruturas de Dados I

Estruturas de Dados I Estruturas de Dados I Rodrigo Porfírio da Silva Sacchi rodrigosacchi@ufgd.edu.br 3410-2075 Aula 6: Listas Encadeadas e Alocação Dinâmica Listas Encadeadas e Alocação Dinâmica Alocação Seqüencial versus

Leia mais

Estrutura de Dados Listas

Estrutura de Dados Listas Universidade Federal da Paraíba Centro de Informática Departamento de Informática Estrutura de Dados Listas 1 Tiago Maritan tiago@ci.ufpb.br Conteúdos Abordados O Conceito de Listas Listas com Representação

Leia mais

Linguagem C: Listas Encadeadas

Linguagem C: Listas Encadeadas Prof. Paulo R. S. L. Coelho paulo@facom.ufu.br Faculdade de Computação Universidade Federal de Uberlândia GEQ007 Organização 1 Introdução 2 3 Organização Introdução 1 Introdução 2 3 Introdução Introdução

Leia mais

ESTRUTURA DE DADOS (TCC )

ESTRUTURA DE DADOS (TCC ) ESTRUTURA DE DADOS (TCC-00.319) Listas lineares Pilhas e Filas Cristina Boeres 2 Manipulando listas lineares! Dependendo do problema a ser resolvidos, existem duas formas especiais (que veremos aqui no

Leia mais

Estruturas de Dados. Profº Carlos Alberto Teixeira Batista

Estruturas de Dados. Profº Carlos Alberto Teixeira Batista Estruturas de Dados Profº Carlos Alberto Teixeira Batista E-mail: carlos.batista@facape.br carlos36_batista@yahoo.com.br Lista Linear São estruturas formadas por um conjunto de dados de forma a preservar

Leia mais

Alocação Seqüencial VAL MAX TOPO

Alocação Seqüencial VAL MAX TOPO 306 Alocação Encadeada Como vimos, uma fila nada mais é do que uma lista com uma disciplina de acesso. Logo, podemos nos utilizar de todos os conceitos vistos em listas para implementarmos filas. Por exemplo,

Leia mais

LISTAS ENCADEADAS OU NÃO- SEQÜENCIAIS. Estrutura de Dados

LISTAS ENCADEADAS OU NÃO- SEQÜENCIAIS. Estrutura de Dados LISTAS ENCADEADAS OU NÃO- SEQÜENCIAIS Listas Lineares Como visto anteriormente, as operações básicas para o nosso TAD Lista Linear são: FLVazia Vazia Retira Insere Imprime A implementação através de arrays

Leia mais

Pilhas. Prof. Túlio Toffolo BCC202 Aula 11 Algoritmos e Estruturas de Dados I

Pilhas. Prof. Túlio Toffolo  BCC202 Aula 11 Algoritmos e Estruturas de Dados I Pilhas Prof. Túlio Toffolo http://www.toffolo.com.br BCC202 Aula 11 Algoritmos e Estruturas de Dados I O que é uma pilha? 4 Pilha 3 4 1 2 3 2 1 TAD Pilha Tipo Abstrato de dados com a seguinte característica:

Leia mais

- Mapa de memória de um processo - Ponteiros

- Mapa de memória de um processo - Ponteiros 1 MCTA028 Programação Estruturada - Mapa de memória de um processo - Ponteiros Material preparado a partir de slides dos profs. Jesús Mena-Chalco e Fabrício Olivetti Luiz Rozante 3Q-2018 2 Alocação de

Leia mais

Introdução a Programação. Ponteiros e Vetores, Alocação Dinâmica

Introdução a Programação. Ponteiros e Vetores, Alocação Dinâmica Introdução a Programação Ponteiros e Vetores, Alocação Dinâmica Tópicos da Aula Hoje aprenderemos que existe uma forte relação entre ponteiros e vetores Associação entre ponteiros e vetores Ponteiros constantes

Leia mais

Estrutura de Dados II. Prof. Sérgio Portari

Estrutura de Dados II. Prof. Sérgio Portari Estrutura de Dados II Prof. Sérgio Portari - 2016 Plano de Ensino EMENTA: Filas, Árvores e suas generalizações: árvores binárias, árvores de busca, árvores balanceadas, árvores B e B+. Aplicações de árvores

Leia mais

1/36 LISTAS. Programação II

1/36 LISTAS. Programação II 1/36 LISTAS Estrutura de Dados 2/36 Estrutura de Dados Definição - Uma Estrutura de Dados é: - uma coleção de tipos de dados, composta por tipos não estruturados básicos, tipos estruturados ou uma mistura

Leia mais

Pilhas. Prof. Rui Jorge Tramontin Jr. UDESC - Rui J. Tramontin Jr. 1

Pilhas. Prof. Rui Jorge Tramontin Jr. UDESC - Rui J. Tramontin Jr. 1 Pilhas Prof. Rui Jorge Tramontin Jr. UDESC - Rui J. Tramontin Jr. 1 Índice Introdução Operações de uma pilha Aplicações TAD da Pilha em C UDESC - Rui J. Tramontin Jr. 2 Introdução Pilha é uma lista na

Leia mais

CES-11. Pilhas Definição Operações Filas. Operações Deques. Definição. Operações

CES-11. Pilhas Definição Operações Filas. Operações Deques. Definição. Operações CES-11 Pilhas Definição Operações Filas Definição Operações Deques Definição Operações PILHAS, FILAS E DEQUES As listas lineares admitem inserção e eliminação em qualquer posição. Pilhas, filas e deques

Leia mais

Programação Estruturada Prof. Rodrigo Hausen Agregados de Dados Heterogêneos (structs)

Programação Estruturada Prof. Rodrigo Hausen   Agregados de Dados Heterogêneos (structs) Programação Estruturada Prof. Rodrigo Hausen http://progest.compscinet.org Agregados de Dados Heterogêneos (structs) 1 AGREGADO HOMOGÊNEO Um agregado homogêneo de dados é um conjunto de dados que são necessariamente

Leia mais

Sumário. Introdução à Ciência da Computação. Ponteiros em C. Introdução. Definição. Por quê ponteiros são importantes?

Sumário. Introdução à Ciência da Computação. Ponteiros em C. Introdução. Definição. Por quê ponteiros são importantes? Introdução à Ciência da Computação Ponteiros em C Prof. Ricardo J. G. B. Campello Sumário Introdução Definição de Ponteiros Declaração de Ponteiros em C Manipulação de Ponteiros em C Operações Ponteiros

Leia mais

Edital de Seleção 024/2017 PROPESP/UFAM. Prova de Conhecimento. Caderno de Questões

Edital de Seleção 024/2017 PROPESP/UFAM. Prova de Conhecimento. Caderno de Questões Edital de Seleção 024/2017 PROPESP/UFAM Prova de Conhecimento Caderno de Questões CANDIDATO: «Nome» INSCRIÇÃO: «Inscrição» Assinatura conforme identidade INSTRUÇÕES PARA O CANDIDATO: Verifique o seu nome

Leia mais

Aula 17: Ponteiros e Alocação Dinâmica em C

Aula 17: Ponteiros e Alocação Dinâmica em C Aula 17: Ponteiros e Alocação Dinâmica em C Fernanda Passos Universidade Federal Fluminense Programação de Computadores IV Fernanda Passos (UFF) Ponteiros e Alocação Dinâmica Programação de Computadores

Leia mais

Filas Exemplo de Aplicação

Filas Exemplo de Aplicação Filas Exemplo de Aplicação Uma aplicação interessante para filas é a ordenação por distribuição, descrita a seguir. Seja uma lista l composta de n chaves, cada qual representada por um inteiro numa base

Leia mais

Pilhas e Filas. Algoritmos e Estruturas de Dados Flavio Figueiredo (http://flaviovdf.github.io)

Pilhas e Filas. Algoritmos e Estruturas de Dados Flavio Figueiredo (http://flaviovdf.github.io) Pilhas e Filas Algoritmos e Estruturas de Dados 2 2017-1 Flavio Figueiredo (http://flaviovdf.github.io) 1 Pilhas 2 Pilhas (Stack) Estrutura similar às listas lineares que vimos na última aula [Mais Simples]

Leia mais

Estruturas de Dados Básicas

Estruturas de Dados Básicas Estruturas de Dados Básicas Última alteração: 16 de Setembro de 2010 Slides elaborados por Charles Ornelas Almeida, Israel Guerra e Nivio Ziviani Projeto de Algoritmos Cap.3 Estruturas de Dados Básicas

Leia mais

Estrutura de Dados: Lista Linear. Parte I Introdução e Listas Sequenciais Estáticas

Estrutura de Dados: Lista Linear. Parte I Introdução e Listas Sequenciais Estáticas Estrutura de Dados: Lista Linear Parte I Introdução e Listas Sequenciais Estáticas Estrutura de dados: Lista Linear Def. Uma Lista Linear é uma coleção ordenada de componentes de um mesmo tipo. Ela é ou

Leia mais