A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Estruturas de Dados I Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.

Apresentações semelhantes


Apresentação em tema: "Estruturas de Dados I Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1."— Transcrição da apresentação:

1 Estruturas de Dados I Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1

2 Sumário Tipos Struturas; Exercício; Prof.: Sergio Pacheco 2 2

3 Tipo Estruturas Prof.: Sergio Pacheco 3 3

4 Tipo Estruturas Tipo de dado com campos compostos de tipos mais simples; elementos acessados através do operador de acesso “ponto” (.); Uma estrutura deve ser declarada após incluir as bibliotecas e antes da função main. Prof.: Sergio Pacheco 4 4

5 Tipo Estruturas Prof.: Sergio Pacheco 5 5

6 Tipo Estruturas - Exemplo
Prof.: Sergio Pacheco 6 6

7 Tipo Estruturas – Exemplo fflush
void cad_condenado() { system ("cls"); printf ("Inserir dados\n"); printf("\n"); printf (" Nome: "); fflush(stdin); fgets (nome,31,stdin); printf(“\n"); printf ("\n Idade: "); scanf ("%d", &idade); } Prof.: Sergio Pacheco 7 7

8 Tipo Estruturas - Listas Encadeadas
Seqüência encadeada de elementos, chamados de nós da lista; E são representados por 2 campos: Um relacionado a informação armazenada; Outro para o próximo nó da lista. Prof.: Sergio Pacheco 8 8

9 Estrutura - Lista encadeada
Não podemos garantir que os elementos armazenados na lista ocuparão um espaço de memória contíguo, portanto não temos acesso direto aos elementos da lista. Para que seja possível percorrer todos os elementos da lista, devemos explicitamente guardar o encadeamento dos elementos. Prof.: Sergio Pacheco 9 9

10 Estrutura - Lista encadeada
Trata-se de uma estrutura auto-referenciada. Prof.: Sergio Pacheco 10 10

11 Estrutura - Lista encadeada
Em C oferece outro operador de acesso, que permite acessar campos a partir do ponteiro da estrutura. Este operador é composto por um traço seguido de um sinal de maior, formando uma seta ( ->). Em resumo, se temos uma variável estrutura e queremos acessar seus campos, usamos o operador de acesso ponto (p.x ); se temos uma variável ponteiro para estrutura, usamos o operador de acesso seta (pp->x). Seguindo o raciocínio, se temos o ponteiro e queremos acessar o endereço de um campo, fazemos &pp->x. pp->x = 12.0; Prof.: Sergio Pacheco 11 11

12 Estrutura - Lista encadeada
Passagem de estruturas para funções void imprime (struct ponto p) { printf("O ponto fornecido foi: (%.2f,%.2f)\n", p.x, p.y); } Problema : Cópia de toda a estrutura para a pilha: Passagem por Valor : A função não tem como alterar os valores dos elementos da estrutura original; É mais conveniente passar apenas o ponteiro da estrutura, mesmo que não seja necessário alterar os valores dos elementos dentro da função. Prof.: Sergio Pacheco 12 12

13 Lista encadeada - Inicialização
A função que inicializa uma lista deve criar uma lista vazia, sem nenhum elemento; Uma lista vazia é representada pelo ponteiro NULL. A função responsável por inicializar lista vazia, deve retornar NULL, ou seja, return Null . /* função de inicialização: retorna uma lista vazia */ Lista* inicializa (void){ return NULL; } Prof.: Sergio Pacheco 13 13

14 Lista encadeada - Inserção
Uma vez criada a lista vazia, podemos inserir novos elementos nela; Para cada elemento inserido na lista, devemos alocar dinamicamente a memória necessária para armazenar o elemento e encadeá-lo na lista existente. /* inserção no início: retorna a lista atualizada */ Lista* insere (Lista* l, int i) { Lista* novo = (Lista*) malloc(sizeof(Lista)); novo->info = i; novo->prox = l; return novo; } Prof.: Sergio Pacheco 14 14

15 Lista encadeada – Verifica se a Lista vazia
Função que verifique se uma lista está vazia ou não; Deve-se para isso incluir a biblioteca #include <stdbool.h>. /* função vazia: retorna true se vazia ou false se não vazia */ bool vazia (Lista* l){ if (l == NULL) return true; else return false; } Por que não precisa verificar se a lista está cheia na hora da inserção. Prof.: Sergio Pacheco 15 15

16 Lista encadeada – Exercício
Montar as funções mostradas e montar um único arquivo.c; Desenhar, com o intuito de mostrar por onde estão sendo as inserções de novos nós; Criar um função para procurar um item na lista, o programa deverá emitir a Msg elemento encontrado ou não; Alterar o código anterior para que o usuário possa interagir com a inserção de novos nós (inclusão de um menu). Arquivo.c Prof.: Sergio Pacheco 16 16

17 Lista encadeada – Exercício
A função para retirar um elemento da lista é mais complexa; Verificar a posição do nó a ser retirado; Não podemos perder a referência Prof.: Sergio Pacheco 17 17

18 Lista encadeada – Exercício
Montar as funções mostradas e montar um único arquivo.c; Desenhar, com o intuito de mostrar por onde estão sendo as inserções de novos nós; Criar um função para procurar um item na lista, o programa deverá emitir a Msg elemento encontrado ou não; Alterar o código anterior para que o usuário possa interagir com a inserção de novos nós (inclusão de um menu). Arquivo.c Prof.: Sergio Pacheco 18 18

19 Lista encadeada – Retirar
} Prof.: Sergio Pacheco 19 19

20 Lista encadeada – Exercício
Inserir no código a função de retirar um item da lista. Arquivo.c Prof.: Sergio Pacheco 20 20

21 Bom final de semana e até semana que vem !!!
Deus abençoe a todos. ( Prof.: Sergio Pacheco 21 21


Carregar ppt "Estruturas de Dados I Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1."

Apresentações semelhantes


Anúncios Google