63
AULA 10 ESTRUTURA DE DADOS Deque Norton T. Roman & Luciano A. Digiampietri

AULA 10 ESTRUTURA DE DADOS - Deque · 2016-08-22 · AULA 10 ESTRUTURA DE DADOS Deque Norton T. Roman & Luciano A. Digiampietri. Deque É uma estrutura de dados na qual os elementos

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: AULA 10 ESTRUTURA DE DADOS - Deque · 2016-08-22 · AULA 10 ESTRUTURA DE DADOS Deque Norton T. Roman & Luciano A. Digiampietri. Deque É uma estrutura de dados na qual os elementos

AULA 10ESTRUTURA DE DADOS

Deque

Norton T. Roman & Luciano A. Digiampietri

Page 2: AULA 10 ESTRUTURA DE DADOS - Deque · 2016-08-22 · AULA 10 ESTRUTURA DE DADOS Deque Norton T. Roman & Luciano A. Digiampietri. Deque É uma estrutura de dados na qual os elementos

Deque

É uma estrutura de dados na qual os elementospodem ser inseridos ou excluídos de qualquer umade suas extremidades (do início ou do fim).

- Utilizaremos uma implementação duplamente ligada (ouduplamente encadeada), na qual cada elemento possui oendereço de seu antecessor e de seu sucessor.- Utilizaremos um nó cabeça para facilitar o gerenciamentoda estrutura.

Page 3: AULA 10 ESTRUTURA DE DADOS - Deque · 2016-08-22 · AULA 10 ESTRUTURA DE DADOS Deque Norton T. Roman & Luciano A. Digiampietri. Deque É uma estrutura de dados na qual os elementos

Deque

É uma estrutura de dados na qual os elementospodem ser inseridos ou excluídos de qualquer umade suas extremidades (do início ou do fim).

- Utilizaremos uma implementação duplamente ligada (ouduplamente encadeada), na qual cada elemento possui oendereço de seu antecessor e de seu sucessor.

- Utilizaremos um nó cabeça para facilitar o gerenciamentoda estrutura.

Page 4: AULA 10 ESTRUTURA DE DADOS - Deque · 2016-08-22 · AULA 10 ESTRUTURA DE DADOS Deque Norton T. Roman & Luciano A. Digiampietri. Deque É uma estrutura de dados na qual os elementos

Deque

É uma estrutura de dados na qual os elementospodem ser inseridos ou excluídos de qualquer umade suas extremidades (do início ou do fim).

- Utilizaremos uma implementação duplamente ligada (ouduplamente encadeada), na qual cada elemento possui oendereço de seu antecessor e de seu sucessor.- Utilizaremos um nó cabeça para facilitar o gerenciamentoda estrutura.

Page 5: AULA 10 ESTRUTURA DE DADOS - Deque · 2016-08-22 · AULA 10 ESTRUTURA DE DADOS Deque Norton T. Roman & Luciano A. Digiampietri. Deque É uma estrutura de dados na qual os elementos

Deque

Temos um ponteiro para o nó cabeçaCada elemento indica seu antecessor e seu sucessor (o últimotem o nó cabeça como sucessor e o nó cabeça tem o últimocomo antecessor).

Como excluímos um elemento do início?Como inserimos o elemento 1 no fim?

Page 6: AULA 10 ESTRUTURA DE DADOS - Deque · 2016-08-22 · AULA 10 ESTRUTURA DE DADOS Deque Norton T. Roman & Luciano A. Digiampietri. Deque É uma estrutura de dados na qual os elementos

Deque

Temos um ponteiro para o nó cabeçaCada elemento indica seu antecessor e seu sucessor (o últimotem o nó cabeça como sucessor e o nó cabeça tem o últimocomo antecessor).Como excluímos um elemento do início?

Como inserimos o elemento 1 no fim?

Page 7: AULA 10 ESTRUTURA DE DADOS - Deque · 2016-08-22 · AULA 10 ESTRUTURA DE DADOS Deque Norton T. Roman & Luciano A. Digiampietri. Deque É uma estrutura de dados na qual os elementos

Deque

Temos um ponteiro para o nó cabeçaCada elemento indica seu antecessor e seu sucessor (o últimotem o nó cabeça como sucessor e o nó cabeça tem o últimocomo antecessor).Como excluímos um elemento do início?

Como inserimos o elemento 1 no fim?

Page 8: AULA 10 ESTRUTURA DE DADOS - Deque · 2016-08-22 · AULA 10 ESTRUTURA DE DADOS Deque Norton T. Roman & Luciano A. Digiampietri. Deque É uma estrutura de dados na qual os elementos

Deque

Temos um ponteiro para o nó cabeçaCada elemento indica seu antecessor e seu sucessor (o últimotem o nó cabeça como sucessor e o nó cabeça tem o últimocomo antecessor).Como excluímos um elemento do início?Como inserimos o elemento 1 no fim?

Page 9: AULA 10 ESTRUTURA DE DADOS - Deque · 2016-08-22 · AULA 10 ESTRUTURA DE DADOS Deque Norton T. Roman & Luciano A. Digiampietri. Deque É uma estrutura de dados na qual os elementos

Deque

Temos um ponteiro para o nó cabeçaCada elemento indica seu antecessor e seu sucessor (o últimotem o nó cabeça como sucessor e o nó cabeça tem o últimocomo antecessor).Como excluímos um elemento do início?Como inserimos o elemento 1 no fim?

Page 10: AULA 10 ESTRUTURA DE DADOS - Deque · 2016-08-22 · AULA 10 ESTRUTURA DE DADOS Deque Norton T. Roman & Luciano A. Digiampietri. Deque É uma estrutura de dados na qual os elementos

Modelagem#include <stdio.h>

#include <malloc.h>

typedef int TIPOCHAVE;

typedef struct {

TIPOCHAVE chave;

// outros campos...

} REGISTRO;

typedef struct auxElem {

REGISTRO reg;

struct auxElem* ant;

struct auxElem* prox;

} ELEMENTO;

typedef ELEMENTO* PONT;

typedef struct {

PONT cabeca;

} DEQUE;

Page 11: AULA 10 ESTRUTURA DE DADOS - Deque · 2016-08-22 · AULA 10 ESTRUTURA DE DADOS Deque Norton T. Roman & Luciano A. Digiampietri. Deque É uma estrutura de dados na qual os elementos

Modelagem#include <stdio.h>

#include <malloc.h>

typedef int TIPOCHAVE;

typedef struct {

TIPOCHAVE chave;

// outros campos...

} REGISTRO;

typedef struct auxElem {

REGISTRO reg;

struct auxElem* ant;

struct auxElem* prox;

} ELEMENTO;

typedef ELEMENTO* PONT;

typedef struct {

PONT cabeca;

} DEQUE;

Page 12: AULA 10 ESTRUTURA DE DADOS - Deque · 2016-08-22 · AULA 10 ESTRUTURA DE DADOS Deque Norton T. Roman & Luciano A. Digiampietri. Deque É uma estrutura de dados na qual os elementos

Modelagem#include <stdio.h>

#include <malloc.h>

typedef int TIPOCHAVE;

typedef struct {

TIPOCHAVE chave;

// outros campos...

} REGISTRO;

typedef struct auxElem {

REGISTRO reg;

struct auxElem* ant;

struct auxElem* prox;

} ELEMENTO;

typedef ELEMENTO* PONT;

typedef struct {

PONT cabeca;

} DEQUE;

Page 13: AULA 10 ESTRUTURA DE DADOS - Deque · 2016-08-22 · AULA 10 ESTRUTURA DE DADOS Deque Norton T. Roman & Luciano A. Digiampietri. Deque É uma estrutura de dados na qual os elementos

Funções de gerenciamento

Implementaremos funções para:Inicializar a estruturaRetornar a quantidade de elementos válidosExibir os elementos da estruturaInserir elementos na estrutura (duas funções)Excluir elementos da estrutura (duas funções)Reinicializar a estrutura

Page 14: AULA 10 ESTRUTURA DE DADOS - Deque · 2016-08-22 · AULA 10 ESTRUTURA DE DADOS Deque Norton T. Roman & Luciano A. Digiampietri. Deque É uma estrutura de dados na qual os elementos

Inicialização

Para inicializarmos nosso deque, nós precisamos:

- Criar o nó cabeça;- A variável cabeca precisa apontar para ele;- E o nó cabeça apontará para ele mesmo comoanterior e próximo.

Page 15: AULA 10 ESTRUTURA DE DADOS - Deque · 2016-08-22 · AULA 10 ESTRUTURA DE DADOS Deque Norton T. Roman & Luciano A. Digiampietri. Deque É uma estrutura de dados na qual os elementos

Inicialização

Para inicializarmos nosso deque, nós precisamos:- Criar o nó cabeça;

- A variável cabeca precisa apontar para ele;- E o nó cabeça apontará para ele mesmo comoanterior e próximo.

Page 16: AULA 10 ESTRUTURA DE DADOS - Deque · 2016-08-22 · AULA 10 ESTRUTURA DE DADOS Deque Norton T. Roman & Luciano A. Digiampietri. Deque É uma estrutura de dados na qual os elementos

Inicialização

Para inicializarmos nosso deque, nós precisamos:- Criar o nó cabeça;- A variável cabeca precisa apontar para ele;

- E o nó cabeça apontará para ele mesmo comoanterior e próximo.

Page 17: AULA 10 ESTRUTURA DE DADOS - Deque · 2016-08-22 · AULA 10 ESTRUTURA DE DADOS Deque Norton T. Roman & Luciano A. Digiampietri. Deque É uma estrutura de dados na qual os elementos

Inicialização

Para inicializarmos nosso deque, nós precisamos:- Criar o nó cabeça;- A variável cabeca precisa apontar para ele;- E o nó cabeça apontará para ele mesmo comoanterior e próximo.

Page 18: AULA 10 ESTRUTURA DE DADOS - Deque · 2016-08-22 · AULA 10 ESTRUTURA DE DADOS Deque Norton T. Roman & Luciano A. Digiampietri. Deque É uma estrutura de dados na qual os elementos

Inicializaçãovoid inicializarDeque(DEQUE* d) {

d->cabeca = (PONT) malloc(sizeof(ELEMENTO));

d->cabeca->prox = d->cabeca;

d->cabeca->ant = d->cabeca;

}

Page 19: AULA 10 ESTRUTURA DE DADOS - Deque · 2016-08-22 · AULA 10 ESTRUTURA DE DADOS Deque Norton T. Roman & Luciano A. Digiampietri. Deque É uma estrutura de dados na qual os elementos

Inicializaçãovoid inicializarDeque(DEQUE* d) {

d->cabeca = (PONT) malloc(sizeof(ELEMENTO));

d->cabeca->prox = d->cabeca;

d->cabeca->ant = d->cabeca;

}

Page 20: AULA 10 ESTRUTURA DE DADOS - Deque · 2016-08-22 · AULA 10 ESTRUTURA DE DADOS Deque Norton T. Roman & Luciano A. Digiampietri. Deque É uma estrutura de dados na qual os elementos

Inicializaçãovoid inicializarDeque(DEQUE* d) {

d->cabeca = (PONT) malloc(sizeof(ELEMENTO));

d->cabeca->prox = d->cabeca;

d->cabeca->ant = d->cabeca;

}

Page 21: AULA 10 ESTRUTURA DE DADOS - Deque · 2016-08-22 · AULA 10 ESTRUTURA DE DADOS Deque Norton T. Roman & Luciano A. Digiampietri. Deque É uma estrutura de dados na qual os elementos

Inicializaçãovoid inicializarDeque(DEQUE* d) {

d->cabeca = (PONT) malloc(sizeof(ELEMENTO));

d->cabeca->prox = d->cabeca;

d->cabeca->ant = d->cabeca;

}

Page 22: AULA 10 ESTRUTURA DE DADOS - Deque · 2016-08-22 · AULA 10 ESTRUTURA DE DADOS Deque Norton T. Roman & Luciano A. Digiampietri. Deque É uma estrutura de dados na qual os elementos

Retornar número de elementos

Precisaremos percorrer todos os elementos paracontar quantos são.

Page 23: AULA 10 ESTRUTURA DE DADOS - Deque · 2016-08-22 · AULA 10 ESTRUTURA DE DADOS Deque Norton T. Roman & Luciano A. Digiampietri. Deque É uma estrutura de dados na qual os elementos

Retornar número de elementos

int tamanho(DEQUE* d) {

PONT end = d->cabeca->prox;

int tam = 0;

while (end != d->cabeca) {

tam++;

end = end->prox;

}

return tam;

}

Page 24: AULA 10 ESTRUTURA DE DADOS - Deque · 2016-08-22 · AULA 10 ESTRUTURA DE DADOS Deque Norton T. Roman & Luciano A. Digiampietri. Deque É uma estrutura de dados na qual os elementos

Retornar número de elementos

int tamanho(DEQUE* d) {

PONT end = d->cabeca->prox;

int tam = 0;

while (end != d->cabeca) {

tam++;

end = end->prox;

}

return tam;

}

Page 25: AULA 10 ESTRUTURA DE DADOS - Deque · 2016-08-22 · AULA 10 ESTRUTURA DE DADOS Deque Norton T. Roman & Luciano A. Digiampietri. Deque É uma estrutura de dados na qual os elementos

Retornar número de elementos

int tamanho(DEQUE* d) {

PONT end = d->cabeca->prox;

int tam = 0;

while (end != d->cabeca) {

tam++;

end = end->prox;

}

return tam;

}

Page 26: AULA 10 ESTRUTURA DE DADOS - Deque · 2016-08-22 · AULA 10 ESTRUTURA DE DADOS Deque Norton T. Roman & Luciano A. Digiampietri. Deque É uma estrutura de dados na qual os elementos

Retornar número de elementos

int tamanho(DEQUE* d) {

PONT end = d->cabeca->prox;

int tam = 0;

while (end != d->cabeca) {

tam++;

end = end->prox;

}

return tam;

}

Page 27: AULA 10 ESTRUTURA DE DADOS - Deque · 2016-08-22 · AULA 10 ESTRUTURA DE DADOS Deque Norton T. Roman & Luciano A. Digiampietri. Deque É uma estrutura de dados na qual os elementos

Retornar número de elementos

int tamanho(DEQUE* d) {

PONT end = d->cabeca->prox;

int tam = 0;

while (end != d->cabeca) {

tam++;

end = end->prox;

}

return tam;

}

Page 28: AULA 10 ESTRUTURA DE DADOS - Deque · 2016-08-22 · AULA 10 ESTRUTURA DE DADOS Deque Norton T. Roman & Luciano A. Digiampietri. Deque É uma estrutura de dados na qual os elementos

Retornar número de elementos

int tamanho(DEQUE* d) {PONT end = d->cabeca->prox;int tam = 0;while (end != d->cabeca) {

tam++;end = end->prox;

}return tam;

}

int tamanho2(DEQUE* d) {PONT end = d->cabeca->ant;int tam = 0;while (end != d->cabeca) {

tam++;end = end->ant;

}return tam;

}

Page 29: AULA 10 ESTRUTURA DE DADOS - Deque · 2016-08-22 · AULA 10 ESTRUTURA DE DADOS Deque Norton T. Roman & Luciano A. Digiampietri. Deque É uma estrutura de dados na qual os elementos

Exibição/Impressão

Para exibir os elementos da estrutura precisaremospercorrer os elementos válidos e, por exemplo,imprimir suas chaves.Precisamos lembrar que o nó cabeça não é um doselementos válidos do nosso deque.Podemos percorrer do início para o fim ou do fimpara o início.

Page 30: AULA 10 ESTRUTURA DE DADOS - Deque · 2016-08-22 · AULA 10 ESTRUTURA DE DADOS Deque Norton T. Roman & Luciano A. Digiampietri. Deque É uma estrutura de dados na qual os elementos

Exibição/Impressão

void exibirDequeFim(DEQUE* d) {

PONT end = d->cabeca->ant;

printf("Deque partindo do fim: \" ");

while (end != d->cabeca) {

printf("%i ", end->reg.chave);

end = end->ant;

}

printf("\"\n");

}

Page 31: AULA 10 ESTRUTURA DE DADOS - Deque · 2016-08-22 · AULA 10 ESTRUTURA DE DADOS Deque Norton T. Roman & Luciano A. Digiampietri. Deque É uma estrutura de dados na qual os elementos

Exibição/Impressão

void exibirDequeFim(DEQUE* d) {

PONT end = d->cabeca->ant;

printf("Deque partindo do fim: \" ");

while (end != d->cabeca) {

printf("%i ", end->reg.chave);

end = end->ant;

}

printf("\"\n");

}

Page 32: AULA 10 ESTRUTURA DE DADOS - Deque · 2016-08-22 · AULA 10 ESTRUTURA DE DADOS Deque Norton T. Roman & Luciano A. Digiampietri. Deque É uma estrutura de dados na qual os elementos

Exibição/Impressão

void exibirDequeFim(DEQUE* d) {

PONT end = d->cabeca->ant;

printf("Deque partindo do fim: \" ");

while (end != d->cabeca) {

printf("%i ", end->reg.chave);

end = end->ant;

}

printf("\"\n");

}

Page 33: AULA 10 ESTRUTURA DE DADOS - Deque · 2016-08-22 · AULA 10 ESTRUTURA DE DADOS Deque Norton T. Roman & Luciano A. Digiampietri. Deque É uma estrutura de dados na qual os elementos

Exibição/Impressão

void exibirDequeFim(DEQUE* d) {

PONT end = d->cabeca->ant;

printf("Deque partindo do fim: \" ");

while (end != d->cabeca) {

printf("%i ", end->reg.chave);

end = end->ant;

}

printf("\"\n");

}

Page 34: AULA 10 ESTRUTURA DE DADOS - Deque · 2016-08-22 · AULA 10 ESTRUTURA DE DADOS Deque Norton T. Roman & Luciano A. Digiampietri. Deque É uma estrutura de dados na qual os elementos

Exibição/Impressão

void exibirDequeFim(DEQUE* d) {

PONT end = d->cabeca->ant;

printf("Deque partindo do fim: \" ");

while (end != d->cabeca) {

printf("%i ", end->reg.chave);

end = end->ant;

}

printf("\"\n");

}

Page 35: AULA 10 ESTRUTURA DE DADOS - Deque · 2016-08-22 · AULA 10 ESTRUTURA DE DADOS Deque Norton T. Roman & Luciano A. Digiampietri. Deque É uma estrutura de dados na qual os elementos

Inserção de um elemento

O usuário escolhe a função que insere no início ouno fim e passa como parâmetro o registro a serinserido

A função aloca memória para o novo elemento;Acerta quatro endereços/ponteiros: os dois do elementonovo e o campo ant do elemento que será o posterior donovo e pos do elemento que será o anterior do novo.

Page 36: AULA 10 ESTRUTURA DE DADOS - Deque · 2016-08-22 · AULA 10 ESTRUTURA DE DADOS Deque Norton T. Roman & Luciano A. Digiampietri. Deque É uma estrutura de dados na qual os elementos

Inserção de um elemento

O usuário escolhe a função que insere no início ouno fim e passa como parâmetro o registro a serinserido

A função aloca memória para o novo elemento;

Acerta quatro endereços/ponteiros: os dois do elementonovo e o campo ant do elemento que será o posterior donovo e pos do elemento que será o anterior do novo.

Page 37: AULA 10 ESTRUTURA DE DADOS - Deque · 2016-08-22 · AULA 10 ESTRUTURA DE DADOS Deque Norton T. Roman & Luciano A. Digiampietri. Deque É uma estrutura de dados na qual os elementos

Inserção de um elemento

O usuário escolhe a função que insere no início ouno fim e passa como parâmetro o registro a serinserido

A função aloca memória para o novo elemento;Acerta quatro endereços/ponteiros: os dois do elementonovo e o campo ant do elemento que será o posterior donovo e pos do elemento que será o anterior do novo.

Page 38: AULA 10 ESTRUTURA DE DADOS - Deque · 2016-08-22 · AULA 10 ESTRUTURA DE DADOS Deque Norton T. Roman & Luciano A. Digiampietri. Deque É uma estrutura de dados na qual os elementos

Inserção em dequebool inserirDequeFim(DEQUE* d, REGISTRO reg) {

PONT novo = (PONT) malloc(sizeof(ELEMENTO));

novo->reg = reg;

novo->prox = d->cabeca;

novo->ant = d->cabeca->ant;

d->cabeca->ant = novo;

novo->ant->prox = novo;

return true;

}

Page 39: AULA 10 ESTRUTURA DE DADOS - Deque · 2016-08-22 · AULA 10 ESTRUTURA DE DADOS Deque Norton T. Roman & Luciano A. Digiampietri. Deque É uma estrutura de dados na qual os elementos

Inserção em dequebool inserirDequeFim(DEQUE* d, REGISTRO reg) {

PONT novo = (PONT) malloc(sizeof(ELEMENTO));

novo->reg = reg;

novo->prox = d->cabeca;

novo->ant = d->cabeca->ant;

d->cabeca->ant = novo;

novo->ant->prox = novo;

return true;

}

Page 40: AULA 10 ESTRUTURA DE DADOS - Deque · 2016-08-22 · AULA 10 ESTRUTURA DE DADOS Deque Norton T. Roman & Luciano A. Digiampietri. Deque É uma estrutura de dados na qual os elementos

Inserção em dequebool inserirDequeFim(DEQUE* d, REGISTRO reg) {

PONT novo = (PONT) malloc(sizeof(ELEMENTO));

novo->reg = reg;

novo->prox = d->cabeca;

novo->ant = d->cabeca->ant;

d->cabeca->ant = novo;

novo->ant->prox = novo;

return true;

}

Page 41: AULA 10 ESTRUTURA DE DADOS - Deque · 2016-08-22 · AULA 10 ESTRUTURA DE DADOS Deque Norton T. Roman & Luciano A. Digiampietri. Deque É uma estrutura de dados na qual os elementos

Inserção em dequebool inserirDequeFim(DEQUE* d, REGISTRO reg) {

PONT novo = (PONT) malloc(sizeof(ELEMENTO));

novo->reg = reg;

novo->prox = d->cabeca;

novo->ant = d->cabeca->ant;

d->cabeca->ant = novo;

novo->ant->prox = novo;

return true;

}

Page 42: AULA 10 ESTRUTURA DE DADOS - Deque · 2016-08-22 · AULA 10 ESTRUTURA DE DADOS Deque Norton T. Roman & Luciano A. Digiampietri. Deque É uma estrutura de dados na qual os elementos

Inserção em dequebool inserirDequeFim(DEQUE* d, REGISTRO reg) {

PONT novo = (PONT) malloc(sizeof(ELEMENTO));

novo->reg = reg;

novo->prox = d->cabeca;

novo->ant = d->cabeca->ant;

d->cabeca->ant = novo;

novo->ant->prox = novo;

return true;

}

Page 43: AULA 10 ESTRUTURA DE DADOS - Deque · 2016-08-22 · AULA 10 ESTRUTURA DE DADOS Deque Norton T. Roman & Luciano A. Digiampietri. Deque É uma estrutura de dados na qual os elementos

Inserção em dequebool inserirDequeFim(DEQUE* d, REGISTRO reg) {

PONT novo = (PONT) malloc(sizeof(ELEMENTO));

novo->reg = reg;

novo->prox = d->cabeca;

novo->ant = d->cabeca->ant;

d->cabeca->ant = novo;

novo->ant->prox = novo;

return true;

}

Page 44: AULA 10 ESTRUTURA DE DADOS - Deque · 2016-08-22 · AULA 10 ESTRUTURA DE DADOS Deque Norton T. Roman & Luciano A. Digiampietri. Deque É uma estrutura de dados na qual os elementos

Inserção em dequebool inserirDequeFim(DEQUE* d, REGISTRO reg) {

PONT novo = (PONT) malloc(sizeof(ELEMENTO));

novo->reg = reg;

novo->prox = d->cabeca;

novo->ant = d->cabeca->ant;

d->cabeca->ant = novo;

novo->ant->prox = novo;

return true;

}

Page 45: AULA 10 ESTRUTURA DE DADOS - Deque · 2016-08-22 · AULA 10 ESTRUTURA DE DADOS Deque Norton T. Roman & Luciano A. Digiampietri. Deque É uma estrutura de dados na qual os elementos

Inserção em dequebool inserirDequeFim(DEQUE* d, REGISTRO reg) {

PONT novo = (PONT) malloc(sizeof(ELEMENTO));

novo->reg = reg;

novo->prox = d->cabeca;

novo->ant = d->cabeca->ant;

d->cabeca->ant = novo;

novo->ant->prox = novo;

return true;

}

Page 46: AULA 10 ESTRUTURA DE DADOS - Deque · 2016-08-22 · AULA 10 ESTRUTURA DE DADOS Deque Norton T. Roman & Luciano A. Digiampietri. Deque É uma estrutura de dados na qual os elementos

Exclusão de um elementoO usuário passa a chave do elemento que ele querexcluir

Se houver um elemento com esta chave no deque,exclui este elemento do deque, acerta osponteiros envolvidos e retorna true.Caso contrário, retorna false

Para esta função precisamos saber quem é opredecessor do elemento a ser excluído.

Page 47: AULA 10 ESTRUTURA DE DADOS - Deque · 2016-08-22 · AULA 10 ESTRUTURA DE DADOS Deque Norton T. Roman & Luciano A. Digiampietri. Deque É uma estrutura de dados na qual os elementos

Exclusão de um elementoO usuário passa a chave do elemento que ele querexcluir

Se houver um elemento com esta chave no deque,exclui este elemento do deque, acerta osponteiros envolvidos e retorna true.Caso contrário, retorna falsePara esta função precisamos saber quem é opredecessor do elemento a ser excluído.

Page 48: AULA 10 ESTRUTURA DE DADOS - Deque · 2016-08-22 · AULA 10 ESTRUTURA DE DADOS Deque Norton T. Roman & Luciano A. Digiampietri. Deque É uma estrutura de dados na qual os elementos

Exclusão de um elemento

bool excluirElemDequeInicio(DEQUE* d, REGISTRO* reg) {

if (d->cabeca->prox == d->cabeca) return false;

PONT apagar = d->cabeca->prox;

*reg = apagar->reg;

d->cabeca->prox = apagar->prox;

apagar->prox->ant = d->cabeca;

free(apagar);

return true;

}

Page 49: AULA 10 ESTRUTURA DE DADOS - Deque · 2016-08-22 · AULA 10 ESTRUTURA DE DADOS Deque Norton T. Roman & Luciano A. Digiampietri. Deque É uma estrutura de dados na qual os elementos

Exclusão de um elemento

bool excluirElemDequeInicio(DEQUE* d, REGISTRO* reg) {

if (d->cabeca->prox == d->cabeca) return false;

PONT apagar = d->cabeca->prox;

*reg = apagar->reg;

d->cabeca->prox = apagar->prox;

apagar->prox->ant = d->cabeca;

free(apagar);

return true;

}

Page 50: AULA 10 ESTRUTURA DE DADOS - Deque · 2016-08-22 · AULA 10 ESTRUTURA DE DADOS Deque Norton T. Roman & Luciano A. Digiampietri. Deque É uma estrutura de dados na qual os elementos

Exclusão de um elemento

bool excluirElemDequeInicio(DEQUE* d, REGISTRO* reg) {

if (d->cabeca->prox == d->cabeca) return false;

PONT apagar = d->cabeca->prox;

*reg = apagar->reg;

d->cabeca->prox = apagar->prox;

apagar->prox->ant = d->cabeca;

free(apagar);

return true;

}

Page 51: AULA 10 ESTRUTURA DE DADOS - Deque · 2016-08-22 · AULA 10 ESTRUTURA DE DADOS Deque Norton T. Roman & Luciano A. Digiampietri. Deque É uma estrutura de dados na qual os elementos

Exclusão de um elemento

bool excluirElemDequeInicio(DEQUE* d, REGISTRO* reg) {

if (d->cabeca->prox == d->cabeca) return false;

PONT apagar = d->cabeca->prox;

*reg = apagar->reg;

d->cabeca->prox = apagar->prox;

apagar->prox->ant = d->cabeca;

free(apagar);

return true;

}

Page 52: AULA 10 ESTRUTURA DE DADOS - Deque · 2016-08-22 · AULA 10 ESTRUTURA DE DADOS Deque Norton T. Roman & Luciano A. Digiampietri. Deque É uma estrutura de dados na qual os elementos

Exclusão de um elemento

bool excluirElemDequeInicio(DEQUE* d, REGISTRO* reg) {

if (d->cabeca->prox == d->cabeca) return false;

PONT apagar = d->cabeca->prox;

*reg = apagar->reg;

d->cabeca->prox = apagar->prox;

apagar->prox->ant = d->cabeca;

free(apagar);

return true;

}

Page 53: AULA 10 ESTRUTURA DE DADOS - Deque · 2016-08-22 · AULA 10 ESTRUTURA DE DADOS Deque Norton T. Roman & Luciano A. Digiampietri. Deque É uma estrutura de dados na qual os elementos

Exclusão de um elemento

bool excluirElemDequeInicio(DEQUE* d, REGISTRO* reg) {

if (d->cabeca->prox == d->cabeca) return false;

PONT apagar = d->cabeca->prox;

*reg = apagar->reg;

d->cabeca->prox = apagar->prox;

apagar->prox->ant = d->cabeca;

free(apagar);

return true;

}

Page 54: AULA 10 ESTRUTURA DE DADOS - Deque · 2016-08-22 · AULA 10 ESTRUTURA DE DADOS Deque Norton T. Roman & Luciano A. Digiampietri. Deque É uma estrutura de dados na qual os elementos

Exclusão de um elemento

bool excluirElemDequeInicio(DEQUE* d, REGISTRO* reg) {

if (d->cabeca->prox == d->cabeca) return false;

PONT apagar = d->cabeca->prox;

*reg = apagar->reg;

d->cabeca->prox = apagar->prox;

apagar->prox->ant = d->cabeca;

free(apagar);

return true;

}

Page 55: AULA 10 ESTRUTURA DE DADOS - Deque · 2016-08-22 · AULA 10 ESTRUTURA DE DADOS Deque Norton T. Roman & Luciano A. Digiampietri. Deque É uma estrutura de dados na qual os elementos

Exclusão de um elemento

bool excluirElemDequeInicio(DEQUE* d, REGISTRO* reg) {

if (d->cabeca->prox == d->cabeca) return false;

PONT apagar = d->cabeca->prox;

*reg = apagar->reg;

d->cabeca->prox = apagar->prox;

apagar->prox->ant = d->cabeca;

free(apagar);

return true;

}

Page 56: AULA 10 ESTRUTURA DE DADOS - Deque · 2016-08-22 · AULA 10 ESTRUTURA DE DADOS Deque Norton T. Roman & Luciano A. Digiampietri. Deque É uma estrutura de dados na qual os elementos

Reinicialização de deque

Para reinicializar a estrutura, precisamos excluirtodos os elementos válidos e atualizar os camposprox e prox do nó cabeça.

Page 57: AULA 10 ESTRUTURA DE DADOS - Deque · 2016-08-22 · AULA 10 ESTRUTURA DE DADOS Deque Norton T. Roman & Luciano A. Digiampietri. Deque É uma estrutura de dados na qual os elementos

Reinicialização de deque

Para reinicializar a estrutura, precisamos excluirtodos os elementos válidos e atualizar os camposprox e prox do nó cabeça.

Page 58: AULA 10 ESTRUTURA DE DADOS - Deque · 2016-08-22 · AULA 10 ESTRUTURA DE DADOS Deque Norton T. Roman & Luciano A. Digiampietri. Deque É uma estrutura de dados na qual os elementos

Reinicialização do dequevoid reinicializarDeque(DEQUE* d) {

PONT end = d->cabeca->prox;

while (end != d->cabeca) {

PONT apagar = end;

end = end->prox;

free(apagar);

}

d->cabeca->prox = d->cabeca;

d->cabeca->ant = d->cabeca;

}

Page 59: AULA 10 ESTRUTURA DE DADOS - Deque · 2016-08-22 · AULA 10 ESTRUTURA DE DADOS Deque Norton T. Roman & Luciano A. Digiampietri. Deque É uma estrutura de dados na qual os elementos

Reinicialização do dequevoid reinicializarDeque(DEQUE* d) {

PONT end = d->cabeca->prox;

while (end != d->cabeca) {

PONT apagar = end;

end = end->prox;

free(apagar);

}

d->cabeca->prox = d->cabeca;

d->cabeca->ant = d->cabeca;

}

Page 60: AULA 10 ESTRUTURA DE DADOS - Deque · 2016-08-22 · AULA 10 ESTRUTURA DE DADOS Deque Norton T. Roman & Luciano A. Digiampietri. Deque É uma estrutura de dados na qual os elementos

Reinicialização do dequevoid reinicializarDeque(DEQUE* d) {

PONT end = d->cabeca->prox;

while (end != d->cabeca) {

PONT apagar = end;

end = end->prox;

free(apagar);

}

d->cabeca->prox = d->cabeca;

d->cabeca->ant = d->cabeca;

}

Page 61: AULA 10 ESTRUTURA DE DADOS - Deque · 2016-08-22 · AULA 10 ESTRUTURA DE DADOS Deque Norton T. Roman & Luciano A. Digiampietri. Deque É uma estrutura de dados na qual os elementos

Reinicialização do dequevoid reinicializarDeque(DEQUE* d) {

PONT end = d->cabeca->prox;

while (end != d->cabeca) {

PONT apagar = end;

end = end->prox;

free(apagar);

}

d->cabeca->prox = d->cabeca;

d->cabeca->ant = d->cabeca;

}

Page 62: AULA 10 ESTRUTURA DE DADOS - Deque · 2016-08-22 · AULA 10 ESTRUTURA DE DADOS Deque Norton T. Roman & Luciano A. Digiampietri. Deque É uma estrutura de dados na qual os elementos

Reinicialização do dequevoid reinicializarDeque(DEQUE* d) {

PONT end = d->cabeca->prox;

while (end != d->cabeca) {

PONT apagar = end;

end = end->prox;

free(apagar);

}

d->cabeca->prox = d->cabeca;

d->cabeca->ant = d->cabeca;

}

Page 63: AULA 10 ESTRUTURA DE DADOS - Deque · 2016-08-22 · AULA 10 ESTRUTURA DE DADOS Deque Norton T. Roman & Luciano A. Digiampietri. Deque É uma estrutura de dados na qual os elementos

AULA 10ESTRUTURA DE DADOS

Deque

Norton T. Roman & Luciano A. Digiampietri