REVISÃO DE PILHAS E FILASvanessa/material/ed/02-Revisao-Pilhas-Filas.pdf · EXEMPLO DE...
Transcript of REVISÃO DE PILHAS E FILASvanessa/material/ed/02-Revisao-Pilhas-Filas.pdf · EXEMPLO DE...
![Page 1: REVISÃO DE PILHAS E FILASvanessa/material/ed/02-Revisao-Pilhas-Filas.pdf · EXEMPLO DE MANIPULAÇÃO DE PILHA COM VETOR 1. Inicializar pilha de inteiros com máximo de 10 nós 2.](https://reader034.fdocuments.net/reader034/viewer/2022042916/5f57bb7efc2b9266112a3641/html5/thumbnails/1.jpg)
REVISÃO DE PILHAS E FILAS Vanessa BraganholoEstruturas de Dados e Seus Algoritmos
![Page 2: REVISÃO DE PILHAS E FILASvanessa/material/ed/02-Revisao-Pilhas-Filas.pdf · EXEMPLO DE MANIPULAÇÃO DE PILHA COM VETOR 1. Inicializar pilha de inteiros com máximo de 10 nós 2.](https://reader034.fdocuments.net/reader034/viewer/2022042916/5f57bb7efc2b9266112a3641/html5/thumbnails/2.jpg)
PILHAS E FILAS
São tipos especiais de listas com disciplina restrita de acesso
Acesso
Consulta
Inserção
Remoção
Disciplina Restrita
Acesso permitido a
apenas alguns nós
![Page 3: REVISÃO DE PILHAS E FILASvanessa/material/ed/02-Revisao-Pilhas-Filas.pdf · EXEMPLO DE MANIPULAÇÃO DE PILHA COM VETOR 1. Inicializar pilha de inteiros com máximo de 10 nós 2.](https://reader034.fdocuments.net/reader034/viewer/2022042916/5f57bb7efc2b9266112a3641/html5/thumbnails/3.jpg)
PILHAS
![Page 4: REVISÃO DE PILHAS E FILASvanessa/material/ed/02-Revisao-Pilhas-Filas.pdf · EXEMPLO DE MANIPULAÇÃO DE PILHA COM VETOR 1. Inicializar pilha de inteiros com máximo de 10 nós 2.](https://reader034.fdocuments.net/reader034/viewer/2022042916/5f57bb7efc2b9266112a3641/html5/thumbnails/4.jpg)
PILHAS
Todas as operações são executadas na mesma extremidade da pilha: o último componente inserido é o primeiro a ser retirado
LIFO: Last In, First Out
INSTITUTO DE COMPUTAÇÃO - UFF 4
consultas
exclusões
inserções
![Page 5: REVISÃO DE PILHAS E FILASvanessa/material/ed/02-Revisao-Pilhas-Filas.pdf · EXEMPLO DE MANIPULAÇÃO DE PILHA COM VETOR 1. Inicializar pilha de inteiros com máximo de 10 nós 2.](https://reader034.fdocuments.net/reader034/viewer/2022042916/5f57bb7efc2b9266112a3641/html5/thumbnails/5.jpg)
EXEMPLO DE APLICAÇÃO: RECURSÃO
void recursiveFunction(int num){
if (num < 5){
recursiveFunction(num + 1);printf("%d\n", num);
}}
int main() {recursiveFunction(0);
}
![Page 6: REVISÃO DE PILHAS E FILASvanessa/material/ed/02-Revisao-Pilhas-Filas.pdf · EXEMPLO DE MANIPULAÇÃO DE PILHA COM VETOR 1. Inicializar pilha de inteiros com máximo de 10 nós 2.](https://reader034.fdocuments.net/reader034/viewer/2022042916/5f57bb7efc2b9266112a3641/html5/thumbnails/6.jpg)
RECURSÃO
void recursiveFunction(int num){
if (num < 5){
recursiveFunction(num + 1);printf("%d\n", num);
}}
int main() {recursiveFunction(0);
}
![Page 7: REVISÃO DE PILHAS E FILASvanessa/material/ed/02-Revisao-Pilhas-Filas.pdf · EXEMPLO DE MANIPULAÇÃO DE PILHA COM VETOR 1. Inicializar pilha de inteiros com máximo de 10 nós 2.](https://reader034.fdocuments.net/reader034/viewer/2022042916/5f57bb7efc2b9266112a3641/html5/thumbnails/7.jpg)
consultas
exclusões
inserçõesbasetopo
OPERAÇÕES SOBRE PILHAS
Operações válidas: Criar uma pilha vazia Inserir um nó no topo da pilha Excluir o nó do topo da pilha Consultar/Modificar o nó do topo da pilha Destruir a pilha
![Page 8: REVISÃO DE PILHAS E FILASvanessa/material/ed/02-Revisao-Pilhas-Filas.pdf · EXEMPLO DE MANIPULAÇÃO DE PILHA COM VETOR 1. Inicializar pilha de inteiros com máximo de 10 nós 2.](https://reader034.fdocuments.net/reader034/viewer/2022042916/5f57bb7efc2b9266112a3641/html5/thumbnails/8.jpg)
ALTERNATIVAS DE IMPLEMENTAÇÃO
Vetores
Listas Encadeadas
INSTITUTO DE COMPUTAÇÃO - UFF 8
![Page 9: REVISÃO DE PILHAS E FILASvanessa/material/ed/02-Revisao-Pilhas-Filas.pdf · EXEMPLO DE MANIPULAÇÃO DE PILHA COM VETOR 1. Inicializar pilha de inteiros com máximo de 10 nós 2.](https://reader034.fdocuments.net/reader034/viewer/2022042916/5f57bb7efc2b9266112a3641/html5/thumbnails/9.jpg)
IMPLEMENTAÇÃO DE PILHAS COM VETORES
INSTITUTO DE COMPUTAÇÃO - UFF 9
![Page 10: REVISÃO DE PILHAS E FILASvanessa/material/ed/02-Revisao-Pilhas-Filas.pdf · EXEMPLO DE MANIPULAÇÃO DE PILHA COM VETOR 1. Inicializar pilha de inteiros com máximo de 10 nós 2.](https://reader034.fdocuments.net/reader034/viewer/2022042916/5f57bb7efc2b9266112a3641/html5/thumbnails/10.jpg)
EXEMPLO DE MANIPULAÇÃO DE PILHA COM VETOR1. Inicializar pilha de inteiros com máximo de 10 nós
9
8
7
6
5
4
3
2
1
0
lim
topo
base
![Page 11: REVISÃO DE PILHAS E FILASvanessa/material/ed/02-Revisao-Pilhas-Filas.pdf · EXEMPLO DE MANIPULAÇÃO DE PILHA COM VETOR 1. Inicializar pilha de inteiros com máximo de 10 nós 2.](https://reader034.fdocuments.net/reader034/viewer/2022042916/5f57bb7efc2b9266112a3641/html5/thumbnails/11.jpg)
EXEMPLO DE MANIPULAÇÃO DE PILHA COM VETOR1. Inicializar pilha de inteiros com máximo de 10 nós
2. Inserir nó com valor 39
8
7
6
5
4
3
2
1
3 0
lim
topobase
![Page 12: REVISÃO DE PILHAS E FILASvanessa/material/ed/02-Revisao-Pilhas-Filas.pdf · EXEMPLO DE MANIPULAÇÃO DE PILHA COM VETOR 1. Inicializar pilha de inteiros com máximo de 10 nós 2.](https://reader034.fdocuments.net/reader034/viewer/2022042916/5f57bb7efc2b9266112a3641/html5/thumbnails/12.jpg)
EXEMPLO DE MANIPULAÇÃO DE PILHA COM VETOR1. Inicializar pilha de inteiros com máximo de 10 nós
2. Inserir nó com valor 3
3. Inserir nó com valor 7
9
8
7
6
5
4
3
2
7 1
3 0
lim
topo
base
![Page 13: REVISÃO DE PILHAS E FILASvanessa/material/ed/02-Revisao-Pilhas-Filas.pdf · EXEMPLO DE MANIPULAÇÃO DE PILHA COM VETOR 1. Inicializar pilha de inteiros com máximo de 10 nós 2.](https://reader034.fdocuments.net/reader034/viewer/2022042916/5f57bb7efc2b9266112a3641/html5/thumbnails/13.jpg)
EXEMPLO DE MANIPULAÇÃO DE PILHA COM VETOR1. Inicializar pilha de inteiros com máximo de 10 nós
2. Inserir nó com valor 3
3. Inserir nó com valor 7
4. Inserir nó com valor 5
9
8
7
6
5
4
3
5 2
7 1
3 0
lim
topo
base
![Page 14: REVISÃO DE PILHAS E FILASvanessa/material/ed/02-Revisao-Pilhas-Filas.pdf · EXEMPLO DE MANIPULAÇÃO DE PILHA COM VETOR 1. Inicializar pilha de inteiros com máximo de 10 nós 2.](https://reader034.fdocuments.net/reader034/viewer/2022042916/5f57bb7efc2b9266112a3641/html5/thumbnails/14.jpg)
EXEMPLO DE MANIPULAÇÃO DE PILHA COM VETOR1. Inicializar pilha de inteiros com máximo de 10 nós
2. Inserir nó com valor 3
3. Inserir nó com valor 7
4. Inserir nó com valor 5
5. Remover nó (nó removido é sempre o nó do topo)
9
8
7
6
5
4
3
2
7 1
3 0
lim
topo
base
![Page 15: REVISÃO DE PILHAS E FILASvanessa/material/ed/02-Revisao-Pilhas-Filas.pdf · EXEMPLO DE MANIPULAÇÃO DE PILHA COM VETOR 1. Inicializar pilha de inteiros com máximo de 10 nós 2.](https://reader034.fdocuments.net/reader034/viewer/2022042916/5f57bb7efc2b9266112a3641/html5/thumbnails/15.jpg)
EXEMPLO DE MANIPULAÇÃO DE PILHA COM VETOR1. Inicializar pilha de inteiros com máximo de 10 nós
2. Inserir nó com valor 3
3. Inserir nó com valor 7
4. Inserir nó com valor 5
5. Remover nó (nó removido é sempre o nó do topo)
6. Consultar pilha (Retorna 7)
9
8
7
6
5
4
3
2
7 1
3 0
lim
topo
base
![Page 16: REVISÃO DE PILHAS E FILASvanessa/material/ed/02-Revisao-Pilhas-Filas.pdf · EXEMPLO DE MANIPULAÇÃO DE PILHA COM VETOR 1. Inicializar pilha de inteiros com máximo de 10 nós 2.](https://reader034.fdocuments.net/reader034/viewer/2022042916/5f57bb7efc2b9266112a3641/html5/thumbnails/16.jpg)
DECLARAÇÃO EM C
typedef struct pilha {int info;
} TPilha;
int base, lim, topo;
INSTITUTO DE COMPUTAÇÃO - UFF 16
![Page 17: REVISÃO DE PILHAS E FILASvanessa/material/ed/02-Revisao-Pilhas-Filas.pdf · EXEMPLO DE MANIPULAÇÃO DE PILHA COM VETOR 1. Inicializar pilha de inteiros com máximo de 10 nós 2.](https://reader034.fdocuments.net/reader034/viewer/2022042916/5f57bb7efc2b9266112a3641/html5/thumbnails/17.jpg)
CRIAÇÃO DO VETOR NA FUNÇÃO MAIN E INICIALIZAÇÃOvoid inicializa(int *base, int *lim, int *topo) {
*base = 0;*lim = 9;*topo = -1;
}
int main() {TPilha pilha[10];inicializa(&base, &lim, &topo);...
}
INSTITUTO DE COMPUTAÇÃO - UFF 17
9
8
7
6
5
4
3
2
1
0
lim
topo
base
![Page 18: REVISÃO DE PILHAS E FILASvanessa/material/ed/02-Revisao-Pilhas-Filas.pdf · EXEMPLO DE MANIPULAÇÃO DE PILHA COM VETOR 1. Inicializar pilha de inteiros com máximo de 10 nós 2.](https://reader034.fdocuments.net/reader034/viewer/2022042916/5f57bb7efc2b9266112a3641/html5/thumbnails/18.jpg)
CRIAÇÃO DO VETOR NA FUNÇÃO MAIN E INICIALIZAÇÃOvoid inicializa(int *base, int *lim, int *topo) {
*base = 0;*lim = 9;*topo = -1;
}
int main() {TPilha pilha[10];inicializa(&base, &lim, &topo);...
}
INSTITUTO DE COMPUTAÇÃO - UFF 18
Note o uso de ponteiros para permitir alteração das variáveis
base, lim e topo.
![Page 19: REVISÃO DE PILHAS E FILASvanessa/material/ed/02-Revisao-Pilhas-Filas.pdf · EXEMPLO DE MANIPULAÇÃO DE PILHA COM VETOR 1. Inicializar pilha de inteiros com máximo de 10 nós 2.](https://reader034.fdocuments.net/reader034/viewer/2022042916/5f57bb7efc2b9266112a3641/html5/thumbnails/19.jpg)
INSERÇÃO DE ELEMENTO: PUSH
int push(TPilha *pilha, int lim, int *topo, int info) {if (pilha_cheia(lim, *topo)) {
return -1; //pilha está cheia, inserção inválida}else {
//faz a inserção*topo = *topo + 1;pilha[*topo].info = info;return info; //retorna elemento inserido
}}
INSTITUTO DE COMPUTAÇÃO - UFF 19
![Page 20: REVISÃO DE PILHAS E FILASvanessa/material/ed/02-Revisao-Pilhas-Filas.pdf · EXEMPLO DE MANIPULAÇÃO DE PILHA COM VETOR 1. Inicializar pilha de inteiros com máximo de 10 nós 2.](https://reader034.fdocuments.net/reader034/viewer/2022042916/5f57bb7efc2b9266112a3641/html5/thumbnails/20.jpg)
INSERÇÃO DE ELEMENTO: PUSH
int push(TPilha *pilha, int lim, int *topo, int info) {if (pilha_cheia(lim, *topo)) {
return -1; //pilha está cheia, inserção inválida}else {
//faz a inserção*topo = *topo + 1;pilha[*topo].info = info;return info; //retorna elemento inserido
}}
INSTITUTO DE COMPUTAÇÃO - UFF 20
Variáveis lim e info não serão alteradas (então não são
ponteiros). Variável topo será alterada, então é ponteiro. Variável p é vetor, então é
ponteiro.
![Page 21: REVISÃO DE PILHAS E FILASvanessa/material/ed/02-Revisao-Pilhas-Filas.pdf · EXEMPLO DE MANIPULAÇÃO DE PILHA COM VETOR 1. Inicializar pilha de inteiros com máximo de 10 nós 2.](https://reader034.fdocuments.net/reader034/viewer/2022042916/5f57bb7efc2b9266112a3641/html5/thumbnails/21.jpg)
CHECAR SE PILHA ESTÁ CHEIA
int pilha_cheia(int lim, int topo) {if (topo == lim)
return 1;else
return 0;}
INSTITUTO DE COMPUTAÇÃO - UFF 21
2 9
3 8
10 7
8 6
1 5
3 4
5 3
7 2
4 1
5 0
limtopo
base
![Page 22: REVISÃO DE PILHAS E FILASvanessa/material/ed/02-Revisao-Pilhas-Filas.pdf · EXEMPLO DE MANIPULAÇÃO DE PILHA COM VETOR 1. Inicializar pilha de inteiros com máximo de 10 nós 2.](https://reader034.fdocuments.net/reader034/viewer/2022042916/5f57bb7efc2b9266112a3641/html5/thumbnails/22.jpg)
REMOÇÃO DE ELEMENTO: POP
int pop(TPilha *pilha, int base, int *topo) {if (pilha_vazia(base, *topo)) {
return -1; //pilha vazia, remoção inválida}else {
//faz a remoçãoint info = pilha[*topo].info;*topo = *topo - 1;return info; //retorna elemento removido
}}
INSTITUTO DE COMPUTAÇÃO - UFF 22
![Page 23: REVISÃO DE PILHAS E FILASvanessa/material/ed/02-Revisao-Pilhas-Filas.pdf · EXEMPLO DE MANIPULAÇÃO DE PILHA COM VETOR 1. Inicializar pilha de inteiros com máximo de 10 nós 2.](https://reader034.fdocuments.net/reader034/viewer/2022042916/5f57bb7efc2b9266112a3641/html5/thumbnails/23.jpg)
CHECAR SE PILHA ESTÁ VAZIA
int pilha_vazia(int base, int topo) {if (topo < base)
return 1; //pilha vaziaelse
return 0; //pilha não vazia
}
INSTITUTO DE COMPUTAÇÃO - UFF 23
9
8
7
6
5
4
3
2
1
0
lim
topo
base
![Page 24: REVISÃO DE PILHAS E FILASvanessa/material/ed/02-Revisao-Pilhas-Filas.pdf · EXEMPLO DE MANIPULAÇÃO DE PILHA COM VETOR 1. Inicializar pilha de inteiros com máximo de 10 nós 2.](https://reader034.fdocuments.net/reader034/viewer/2022042916/5f57bb7efc2b9266112a3641/html5/thumbnails/24.jpg)
CONSULTAR TOPO DA PILHA: PEEK
int peek(TPilha *pilha, int base, int *topo) {if (pilha_vazia(base, *topo))
return -1; //pilha vaziaelse {
//faz consultareturn pilha[*topo].info;
}}
INSTITUTO DE COMPUTAÇÃO - UFF 24
9
8
7
6
5
4
3
7 2
4 1
5 0
lim
topo
base
![Page 25: REVISÃO DE PILHAS E FILASvanessa/material/ed/02-Revisao-Pilhas-Filas.pdf · EXEMPLO DE MANIPULAÇÃO DE PILHA COM VETOR 1. Inicializar pilha de inteiros com máximo de 10 nós 2.](https://reader034.fdocuments.net/reader034/viewer/2022042916/5f57bb7efc2b9266112a3641/html5/thumbnails/25.jpg)
IMPLEMENTAÇÃO COMPLETA
A implementação completa está no site da disciplina
INSTITUTO DE COMPUTAÇÃO - UFF 25
![Page 26: REVISÃO DE PILHAS E FILASvanessa/material/ed/02-Revisao-Pilhas-Filas.pdf · EXEMPLO DE MANIPULAÇÃO DE PILHA COM VETOR 1. Inicializar pilha de inteiros com máximo de 10 nós 2.](https://reader034.fdocuments.net/reader034/viewer/2022042916/5f57bb7efc2b9266112a3641/html5/thumbnails/26.jpg)
IMPLEMENTAÇÃO DE PILHAS COM LISTAS ENCADEADAS
INSTITUTO DE COMPUTAÇÃO - UFF 26
![Page 27: REVISÃO DE PILHAS E FILASvanessa/material/ed/02-Revisao-Pilhas-Filas.pdf · EXEMPLO DE MANIPULAÇÃO DE PILHA COM VETOR 1. Inicializar pilha de inteiros com máximo de 10 nós 2.](https://reader034.fdocuments.net/reader034/viewer/2022042916/5f57bb7efc2b9266112a3641/html5/thumbnails/27.jpg)
PILHA COM LISTA ENCADEADA
8
4
2
7
1
5topoinfo prox
#include "lista-encadeada.h"
typedef struct pilha{TLista *topo;
} TPilha;
λ
pilha
![Page 28: REVISÃO DE PILHAS E FILASvanessa/material/ed/02-Revisao-Pilhas-Filas.pdf · EXEMPLO DE MANIPULAÇÃO DE PILHA COM VETOR 1. Inicializar pilha de inteiros com máximo de 10 nós 2.](https://reader034.fdocuments.net/reader034/viewer/2022042916/5f57bb7efc2b9266112a3641/html5/thumbnails/28.jpg)
INICIALIZA
TPilha *inicializa() {TPilha *pilha = (TPilha *)malloc(sizeof(TPilha));pilha->topo = NULL;return pilha;
}
int main() {TPilha *pilha = inicializa();...
}
INSTITUTO DE COMPUTAÇÃO - UFF 28
topo λpilha
![Page 29: REVISÃO DE PILHAS E FILASvanessa/material/ed/02-Revisao-Pilhas-Filas.pdf · EXEMPLO DE MANIPULAÇÃO DE PILHA COM VETOR 1. Inicializar pilha de inteiros com máximo de 10 nós 2.](https://reader034.fdocuments.net/reader034/viewer/2022042916/5f57bb7efc2b9266112a3641/html5/thumbnails/29.jpg)
PUSH
/* ** Insere elem no topo da pilha* */
void push(TPilha *pilha, int elem) {TLista *novo = (TLista*) malloc(sizeof(TLista));novo->info = elem;novo->prox = pilha->topo;pilha->topo = novo;
}
INSTITUTO DE COMPUTAÇÃO - UFF 29
8
4
2
1
novoinfo prox
λ
topopilha
![Page 30: REVISÃO DE PILHAS E FILASvanessa/material/ed/02-Revisao-Pilhas-Filas.pdf · EXEMPLO DE MANIPULAÇÃO DE PILHA COM VETOR 1. Inicializar pilha de inteiros com máximo de 10 nós 2.](https://reader034.fdocuments.net/reader034/viewer/2022042916/5f57bb7efc2b9266112a3641/html5/thumbnails/30.jpg)
CHAMADA DO PUSH NA FUNÇÃO MAIN
int main() {TPilha *pilha = inicializa();push(pilha, 5);...
}
INSTITUTO DE COMPUTAÇÃO - UFF 30
5topoinfo prox
λ
pilha
![Page 31: REVISÃO DE PILHAS E FILASvanessa/material/ed/02-Revisao-Pilhas-Filas.pdf · EXEMPLO DE MANIPULAÇÃO DE PILHA COM VETOR 1. Inicializar pilha de inteiros com máximo de 10 nós 2.](https://reader034.fdocuments.net/reader034/viewer/2022042916/5f57bb7efc2b9266112a3641/html5/thumbnails/31.jpg)
EXERCÍCIO: IMPLEMENTAR O POP
/* ** Exclui o elemento do topo da pilha* retorna o info do elemento excluído*/
int pop(TPilha *pilha) {//TODO
}
INSTITUTO DE COMPUTAÇÃO - UFF 31
![Page 32: REVISÃO DE PILHAS E FILASvanessa/material/ed/02-Revisao-Pilhas-Filas.pdf · EXEMPLO DE MANIPULAÇÃO DE PILHA COM VETOR 1. Inicializar pilha de inteiros com máximo de 10 nós 2.](https://reader034.fdocuments.net/reader034/viewer/2022042916/5f57bb7efc2b9266112a3641/html5/thumbnails/32.jpg)
EXERCÍCIO: IMPLEMENTAR O PEEK
/* ** Consulta o elemento do topo da pilha* retorna info do elemento do topo*/
int peek(TPilha *pilha) {//TODO
}
INSTITUTO DE COMPUTAÇÃO - UFF 32
![Page 33: REVISÃO DE PILHAS E FILASvanessa/material/ed/02-Revisao-Pilhas-Filas.pdf · EXEMPLO DE MANIPULAÇÃO DE PILHA COM VETOR 1. Inicializar pilha de inteiros com máximo de 10 nós 2.](https://reader034.fdocuments.net/reader034/viewer/2022042916/5f57bb7efc2b9266112a3641/html5/thumbnails/33.jpg)
FILAS
![Page 34: REVISÃO DE PILHAS E FILASvanessa/material/ed/02-Revisao-Pilhas-Filas.pdf · EXEMPLO DE MANIPULAÇÃO DE PILHA COM VETOR 1. Inicializar pilha de inteiros com máximo de 10 nós 2.](https://reader034.fdocuments.net/reader034/viewer/2022042916/5f57bb7efc2b9266112a3641/html5/thumbnails/34.jpg)
FILAS
Inserções são executadas em uma extremidade, e exclusões na outra: o primeiro componente inserido é o primeiro a ser retirado
FIFO: First In, First Out
INSTITUTO DE COMPUTAÇÃO - UFF 34
consultas
exclusõesinserções
![Page 35: REVISÃO DE PILHAS E FILASvanessa/material/ed/02-Revisao-Pilhas-Filas.pdf · EXEMPLO DE MANIPULAÇÃO DE PILHA COM VETOR 1. Inicializar pilha de inteiros com máximo de 10 nós 2.](https://reader034.fdocuments.net/reader034/viewer/2022042916/5f57bb7efc2b9266112a3641/html5/thumbnails/35.jpg)
DECLARAÇÃO
#include "lista-encadeada.h"
typedef struct fila {TLista *inicio;TLista *fim;
} TFila;
INSTITUTO DE COMPUTAÇÃO - UFF 35
5 3 2
inicio fim
![Page 36: REVISÃO DE PILHAS E FILASvanessa/material/ed/02-Revisao-Pilhas-Filas.pdf · EXEMPLO DE MANIPULAÇÃO DE PILHA COM VETOR 1. Inicializar pilha de inteiros com máximo de 10 nós 2.](https://reader034.fdocuments.net/reader034/viewer/2022042916/5f57bb7efc2b9266112a3641/html5/thumbnails/36.jpg)
INSERÇÃO (SEMPRE NO FIM)void insere(TFila *f, int elem){
TLista *novo = (TLista *)malloc(sizeof(TLista));novo->info = elem;novo->prox = NULL; //inserção no fim da filaif (!fila_vazia(f)){
f->fim->prox = novo;}else{
f->inicio = novo;}f->fim = novo; //elt. novo é o novo fim da fila
}
INSTITUTO DE COMPUTAÇÃO - UFF 36
5 3 2inicio
4
novo
fim
![Page 37: REVISÃO DE PILHAS E FILASvanessa/material/ed/02-Revisao-Pilhas-Filas.pdf · EXEMPLO DE MANIPULAÇÃO DE PILHA COM VETOR 1. Inicializar pilha de inteiros com máximo de 10 nós 2.](https://reader034.fdocuments.net/reader034/viewer/2022042916/5f57bb7efc2b9266112a3641/html5/thumbnails/37.jpg)
FILA VAZIA
int fila_vazia(TFila *f){if (f->inicio == NULL) {
return 1;}else return 0;
}
INSTITUTO DE COMPUTAÇÃO - UFF 37
![Page 38: REVISÃO DE PILHAS E FILASvanessa/material/ed/02-Revisao-Pilhas-Filas.pdf · EXEMPLO DE MANIPULAÇÃO DE PILHA COM VETOR 1. Inicializar pilha de inteiros com máximo de 10 nós 2.](https://reader034.fdocuments.net/reader034/viewer/2022042916/5f57bb7efc2b9266112a3641/html5/thumbnails/38.jpg)
RETIRAR ELEMENTO DA FILA (SEMPRE DO INÍCIO)int retira(TFila *f){
if (fila_vazia(f)){exit(1);
}int info = f->inicio->info;
TLista *aux = f->inicio;f->inicio=f->inicio->prox;//se elemento removido era o único da fila//faz fim apontar para NULL tambémif (f->inicio == NULL) {
f->fim = NULL;}free(aux);return info;
}
INSTITUTO DE COMPUTAÇÃO - UFF 38
5 3 2inicio
fim
![Page 39: REVISÃO DE PILHAS E FILASvanessa/material/ed/02-Revisao-Pilhas-Filas.pdf · EXEMPLO DE MANIPULAÇÃO DE PILHA COM VETOR 1. Inicializar pilha de inteiros com máximo de 10 nós 2.](https://reader034.fdocuments.net/reader034/viewer/2022042916/5f57bb7efc2b9266112a3641/html5/thumbnails/39.jpg)
EXERCÍCIOS
1. Faça uma função que imprime o conteúdo da fila, usando as funções de inserção e remoção (ver especificação no Google Classroom)
2. Faça uma função que altera o elemento do início da fila (ver especificação no Google Classroom)
3. Faça uma função que altera o elemento do topo da pilha (ver especificação no Google Classroom)
INSTITUTO DE COMPUTAÇÃO - UFF 39
![Page 40: REVISÃO DE PILHAS E FILASvanessa/material/ed/02-Revisao-Pilhas-Filas.pdf · EXEMPLO DE MANIPULAÇÃO DE PILHA COM VETOR 1. Inicializar pilha de inteiros com máximo de 10 nós 2.](https://reader034.fdocuments.net/reader034/viewer/2022042916/5f57bb7efc2b9266112a3641/html5/thumbnails/40.jpg)
AGRADECIMENTOS
Material baseado nos slides de Renata Galante
Instituto de Informática, UFRGS
Agradecimento a Isabel Rosseti pela implementação
INSTITUTO DE COMPUTAÇÃO - UFF 40