aula 10 estrutura de dados - deque · 2016-08-22 · aula 10 estrutura de dados deque norton t....
TRANSCRIPT
![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](https://reader030.vdocuments.net/reader030/viewer/2022041020/5ecf05e5736fc27d4d7f0ec4/html5/thumbnails/1.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022041020/5ecf05e5736fc27d4d7f0ec4/html5/thumbnails/2.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022041020/5ecf05e5736fc27d4d7f0ec4/html5/thumbnails/3.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022041020/5ecf05e5736fc27d4d7f0ec4/html5/thumbnails/4.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022041020/5ecf05e5736fc27d4d7f0ec4/html5/thumbnails/5.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022041020/5ecf05e5736fc27d4d7f0ec4/html5/thumbnails/6.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022041020/5ecf05e5736fc27d4d7f0ec4/html5/thumbnails/7.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022041020/5ecf05e5736fc27d4d7f0ec4/html5/thumbnails/8.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022041020/5ecf05e5736fc27d4d7f0ec4/html5/thumbnails/9.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022041020/5ecf05e5736fc27d4d7f0ec4/html5/thumbnails/10.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022041020/5ecf05e5736fc27d4d7f0ec4/html5/thumbnails/11.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022041020/5ecf05e5736fc27d4d7f0ec4/html5/thumbnails/12.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022041020/5ecf05e5736fc27d4d7f0ec4/html5/thumbnails/13.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022041020/5ecf05e5736fc27d4d7f0ec4/html5/thumbnails/14.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022041020/5ecf05e5736fc27d4d7f0ec4/html5/thumbnails/15.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022041020/5ecf05e5736fc27d4d7f0ec4/html5/thumbnails/16.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022041020/5ecf05e5736fc27d4d7f0ec4/html5/thumbnails/17.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022041020/5ecf05e5736fc27d4d7f0ec4/html5/thumbnails/18.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022041020/5ecf05e5736fc27d4d7f0ec4/html5/thumbnails/19.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022041020/5ecf05e5736fc27d4d7f0ec4/html5/thumbnails/20.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022041020/5ecf05e5736fc27d4d7f0ec4/html5/thumbnails/21.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022041020/5ecf05e5736fc27d4d7f0ec4/html5/thumbnails/22.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022041020/5ecf05e5736fc27d4d7f0ec4/html5/thumbnails/23.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022041020/5ecf05e5736fc27d4d7f0ec4/html5/thumbnails/24.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022041020/5ecf05e5736fc27d4d7f0ec4/html5/thumbnails/25.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022041020/5ecf05e5736fc27d4d7f0ec4/html5/thumbnails/26.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022041020/5ecf05e5736fc27d4d7f0ec4/html5/thumbnails/27.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022041020/5ecf05e5736fc27d4d7f0ec4/html5/thumbnails/28.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022041020/5ecf05e5736fc27d4d7f0ec4/html5/thumbnails/29.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022041020/5ecf05e5736fc27d4d7f0ec4/html5/thumbnails/30.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022041020/5ecf05e5736fc27d4d7f0ec4/html5/thumbnails/31.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022041020/5ecf05e5736fc27d4d7f0ec4/html5/thumbnails/32.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022041020/5ecf05e5736fc27d4d7f0ec4/html5/thumbnails/33.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022041020/5ecf05e5736fc27d4d7f0ec4/html5/thumbnails/34.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022041020/5ecf05e5736fc27d4d7f0ec4/html5/thumbnails/35.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022041020/5ecf05e5736fc27d4d7f0ec4/html5/thumbnails/36.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022041020/5ecf05e5736fc27d4d7f0ec4/html5/thumbnails/37.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022041020/5ecf05e5736fc27d4d7f0ec4/html5/thumbnails/38.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022041020/5ecf05e5736fc27d4d7f0ec4/html5/thumbnails/39.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022041020/5ecf05e5736fc27d4d7f0ec4/html5/thumbnails/40.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022041020/5ecf05e5736fc27d4d7f0ec4/html5/thumbnails/41.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022041020/5ecf05e5736fc27d4d7f0ec4/html5/thumbnails/42.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022041020/5ecf05e5736fc27d4d7f0ec4/html5/thumbnails/43.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022041020/5ecf05e5736fc27d4d7f0ec4/html5/thumbnails/44.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022041020/5ecf05e5736fc27d4d7f0ec4/html5/thumbnails/45.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022041020/5ecf05e5736fc27d4d7f0ec4/html5/thumbnails/46.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022041020/5ecf05e5736fc27d4d7f0ec4/html5/thumbnails/47.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022041020/5ecf05e5736fc27d4d7f0ec4/html5/thumbnails/48.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022041020/5ecf05e5736fc27d4d7f0ec4/html5/thumbnails/49.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022041020/5ecf05e5736fc27d4d7f0ec4/html5/thumbnails/50.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022041020/5ecf05e5736fc27d4d7f0ec4/html5/thumbnails/51.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022041020/5ecf05e5736fc27d4d7f0ec4/html5/thumbnails/52.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022041020/5ecf05e5736fc27d4d7f0ec4/html5/thumbnails/53.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022041020/5ecf05e5736fc27d4d7f0ec4/html5/thumbnails/54.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022041020/5ecf05e5736fc27d4d7f0ec4/html5/thumbnails/55.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022041020/5ecf05e5736fc27d4d7f0ec4/html5/thumbnails/56.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022041020/5ecf05e5736fc27d4d7f0ec4/html5/thumbnails/57.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022041020/5ecf05e5736fc27d4d7f0ec4/html5/thumbnails/58.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022041020/5ecf05e5736fc27d4d7f0ec4/html5/thumbnails/59.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022041020/5ecf05e5736fc27d4d7f0ec4/html5/thumbnails/60.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022041020/5ecf05e5736fc27d4d7f0ec4/html5/thumbnails/61.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022041020/5ecf05e5736fc27d4d7f0ec4/html5/thumbnails/62.jpg)
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](https://reader030.vdocuments.net/reader030/viewer/2022041020/5ecf05e5736fc27d4d7f0ec4/html5/thumbnails/63.jpg)
AULA 10ESTRUTURA DE DADOS
Deque
Norton T. Roman & Luciano A. Digiampietri