mc-202 — unidade 7 filas e pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · mc-202...
TRANSCRIPT
![Page 1: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/1.jpg)
MC-202 — Unidade 7Filas e Pilhas
Rafael C. S. [email protected]
Universidade Estadual de Campinas
1º semestre/2017
![Page 2: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/2.jpg)
Filas
• Uma impressora é compartilhada em um laboratório• Alunos enviam documentos quase ao mesmo tempo
Como gerenciar a lista de tarefas de impressão?
2
![Page 3: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/3.jpg)
Filas
• Uma impressora é compartilhada em um laboratório• Alunos enviam documentos quase ao mesmo tempo
Como gerenciar a lista de tarefas de impressão?
2
![Page 4: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/4.jpg)
Coleções dinâmicas
São coleções variáveis de objetos guardados em umaestrutura de dados com operações inserir e remover um objeto
Fila:• Remove primeiro objetos inseridos há mais tempo• FIFO (first-infirst-out): primeiro a entrar é primeiro a sair
3
![Page 5: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/5.jpg)
Coleções dinâmicas
São coleções variáveis de objetos guardados em umaestrutura de dados com operações inserir e remover um objeto
Fila:
• Remove primeiro objetos inseridos há mais tempo• FIFO (first-infirst-out): primeiro a entrar é primeiro a sair
3
![Page 6: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/6.jpg)
Coleções dinâmicas
São coleções variáveis de objetos guardados em umaestrutura de dados com operações inserir e remover um objeto
Fila:• Remove primeiro objetos inseridos há mais tempo
• FIFO (first-infirst-out): primeiro a entrar é primeiro a sair
3
![Page 7: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/7.jpg)
Coleções dinâmicas
São coleções variáveis de objetos guardados em umaestrutura de dados com operações inserir e remover um objeto
Fila:• Remove primeiro objetos inseridos há mais tempo• FIFO (first-infirst-out): primeiro a entrar é primeiro a sair
3
![Page 8: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/8.jpg)
FilaOperações:
• Enfileira (queue): adiciona item no “fim”• Desenfileira (dequeue): remove item do “início”
Exemplo:
4
![Page 9: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/9.jpg)
FilaOperações:
• Enfileira (queue): adiciona item no “fim”
• Desenfileira (dequeue): remove item do “início”
Exemplo:
4
![Page 10: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/10.jpg)
FilaOperações:
• Enfileira (queue): adiciona item no “fim”• Desenfileira (dequeue): remove item do “início”
Exemplo:
4
![Page 11: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/11.jpg)
FilaOperações:
• Enfileira (queue): adiciona item no “fim”• Desenfileira (dequeue): remove item do “início”
Exemplo:
4
![Page 12: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/12.jpg)
FilaOperações:
• Enfileira (queue): adiciona item no “fim”• Desenfileira (dequeue): remove item do “início”
Exemplo: Enfileira( )
4
![Page 13: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/13.jpg)
FilaOperações:
• Enfileira (queue): adiciona item no “fim”• Desenfileira (dequeue): remove item do “início”
Exemplo: Enfileira( )
4
![Page 14: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/14.jpg)
FilaOperações:
• Enfileira (queue): adiciona item no “fim”• Desenfileira (dequeue): remove item do “início”
Exemplo: Enfileira( )
4
![Page 15: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/15.jpg)
FilaOperações:
• Enfileira (queue): adiciona item no “fim”• Desenfileira (dequeue): remove item do “início”
Exemplo: Enfileira( )
4
![Page 16: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/16.jpg)
FilaOperações:
• Enfileira (queue): adiciona item no “fim”• Desenfileira (dequeue): remove item do “início”
Exemplo: Desenfileira()
4
![Page 17: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/17.jpg)
FilaOperações:
• Enfileira (queue): adiciona item no “fim”• Desenfileira (dequeue): remove item do “início”
Exemplo: Desenfileira()
4
![Page 18: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/18.jpg)
FilaOperações:
• Enfileira (queue): adiciona item no “fim”• Desenfileira (dequeue): remove item do “início”
Exemplo: Enfileira( )
4
![Page 19: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/19.jpg)
FilaOperações:
• Enfileira (queue): adiciona item no “fim”• Desenfileira (dequeue): remove item do “início”
Exemplo: Enfileira( )
4
![Page 20: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/20.jpg)
FilaOperações:
• Enfileira (queue): adiciona item no “fim”• Desenfileira (dequeue): remove item do “início”
Exemplo: Enfileira( )
4
![Page 21: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/21.jpg)
FilaOperações:
• Enfileira (queue): adiciona item no “fim”• Desenfileira (dequeue): remove item do “início”
Exemplo: Enfileira( )
4
![Page 22: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/22.jpg)
FilaOperações:
• Enfileira (queue): adiciona item no “fim”• Desenfileira (dequeue): remove item do “início”
Exemplo: Desenfileira()
4
![Page 23: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/23.jpg)
FilaOperações:
• Enfileira (queue): adiciona item no “fim”• Desenfileira (dequeue): remove item do “início”
Exemplo: Desenfileira()
4
![Page 24: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/24.jpg)
Fila: implementação com lista ligada
ini fim
A B C D
1 typedef struct {2 No *ini, *fim;3 } Fila;
5
![Page 25: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/25.jpg)
Fila: implementação com lista ligada
ini fim
A B C D
1 typedef struct {2 No *ini, *fim;3 } Fila;
5
![Page 26: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/26.jpg)
Fila: implementação com lista ligada
ini fim
A B C D
1 typedef struct {2 No *ini, *fim;3 } Fila;
5
![Page 27: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/27.jpg)
Fila: implementação com lista ligada
ini fim
A B C D
1 typedef struct {2 No *ini, *fim;3 } Fila;
5
![Page 28: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/28.jpg)
Fila: implementação com lista ligada
ini fim
A B C D
1 void inicializar_fila(Fila *f) {
2 f->ini = NULL;3 f->fim = NULL;4 }
6
![Page 29: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/29.jpg)
Fila: implementação com lista ligada
ini fim
A B C D
1 void inicializar_fila(Fila *f) {
2 f->ini = NULL;3 f->fim = NULL;4 }
6
![Page 30: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/30.jpg)
Fila: implementação com lista ligada
ini fim
A B C D
1 void inicializar_fila(Fila *f) {2 f->ini = NULL;3 f->fim = NULL;4 }
6
![Page 31: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/31.jpg)
Fila: implementação com lista ligada
ini fim
A B C D
1 void enfileira(Fila *f, int x) {
2 No *novo;3 novo = malloc(sizeof(No));4 novo->dado = x;5 novo->prox = NULL;6 if (f->ini == NULL)7 f->ini = novo;8 else9 f->fim->prox = novo;
10 f->fim = novo;11 }
7
![Page 32: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/32.jpg)
Fila: implementação com lista ligada
ini fim
A B C D
1 void enfileira(Fila *f, int x) {
2 No *novo;3 novo = malloc(sizeof(No));4 novo->dado = x;5 novo->prox = NULL;6 if (f->ini == NULL)7 f->ini = novo;8 else9 f->fim->prox = novo;
10 f->fim = novo;11 }
7
![Page 33: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/33.jpg)
Fila: implementação com lista ligada
ini fim
A B C D
1 void enfileira(Fila *f, int x) {2 No *novo;3 novo = malloc(sizeof(No));4 novo->dado = x;5 novo->prox = NULL;
6 if (f->ini == NULL)7 f->ini = novo;8 else9 f->fim->prox = novo;
10 f->fim = novo;11 }
7
![Page 34: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/34.jpg)
Fila: implementação com lista ligada
ini fim
A B C D
1 void enfileira(Fila *f, int x) {2 No *novo;3 novo = malloc(sizeof(No));4 novo->dado = x;5 novo->prox = NULL;6 if (f->ini == NULL)7 f->ini = novo;
8 else9 f->fim->prox = novo;
10 f->fim = novo;11 }
7
![Page 35: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/35.jpg)
Fila: implementação com lista ligada
ini fim
A B C D
1 void enfileira(Fila *f, int x) {2 No *novo;3 novo = malloc(sizeof(No));4 novo->dado = x;5 novo->prox = NULL;6 if (f->ini == NULL)7 f->ini = novo;8 else9 f->fim->prox = novo;
10 f->fim = novo;11 }
7
![Page 36: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/36.jpg)
Fila: implementação com lista ligada
ini fim
A B C D
1 void enfileira(Fila *f, int x) {2 No *novo;3 novo = malloc(sizeof(No));4 novo->dado = x;5 novo->prox = NULL;6 if (f->ini == NULL)7 f->ini = novo;8 else9 f->fim->prox = novo;
10 f->fim = novo;11 }
7
![Page 37: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/37.jpg)
Fila: implementação com lista ligada
ini fim
A B C D
1 int desenfileira(Fila *f) {
2 No *primeiro = f->ini;3 int x = primeiro->dado;4 f->ini = f->ini->prox;5 if (f->ini == NULL)6 f->fim = NULL;7 free(primeiro);8 return x;9 }
8
![Page 38: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/38.jpg)
Fila: implementação com lista ligada
ini fim
A B C D
1 int desenfileira(Fila *f) {
2 No *primeiro = f->ini;3 int x = primeiro->dado;4 f->ini = f->ini->prox;5 if (f->ini == NULL)6 f->fim = NULL;7 free(primeiro);8 return x;9 }
8
![Page 39: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/39.jpg)
Fila: implementação com lista ligada
ini fim
A B C D
1 int desenfileira(Fila *f) {2 No *primeiro = f->ini;
3 int x = primeiro->dado;4 f->ini = f->ini->prox;5 if (f->ini == NULL)6 f->fim = NULL;7 free(primeiro);8 return x;9 }
8
![Page 40: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/40.jpg)
Fila: implementação com lista ligada
ini fim
A B C D
1 int desenfileira(Fila *f) {2 No *primeiro = f->ini;3 int x = primeiro->dado;
4 f->ini = f->ini->prox;5 if (f->ini == NULL)6 f->fim = NULL;7 free(primeiro);8 return x;9 }
8
![Page 41: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/41.jpg)
Fila: implementação com lista ligada
ini fim
A B C D
1 int desenfileira(Fila *f) {2 No *primeiro = f->ini;3 int x = primeiro->dado;4 f->ini = f->ini->prox;
5 if (f->ini == NULL)6 f->fim = NULL;7 free(primeiro);8 return x;9 }
8
![Page 42: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/42.jpg)
Fila: implementação com lista ligada
ini fim
A B C D
1 int desenfileira(Fila *f) {2 No *primeiro = f->ini;3 int x = primeiro->dado;4 f->ini = f->ini->prox;5 if (f->ini == NULL)6 f->fim = NULL;7 free(primeiro);
8 return x;9 }
8
![Page 43: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/43.jpg)
Fila: implementação com lista ligada
ini fim
A B C D
1 int desenfileira(Fila *f) {2 No *primeiro = f->ini;3 int x = primeiro->dado;4 f->ini = f->ini->prox;5 if (f->ini == NULL)6 f->fim = NULL;7 free(primeiro);8 return x;9 }
8
![Page 44: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/44.jpg)
Fila: implementação com lista ligada (outra opção)fim
A B C D
Inserção:• Atualizar o campo prox de fim• Mudar fim para apontar para o novo nó
Remoção:• Basta remover o nó seguinte ao nó dummy
– i.e., fim->prox->prox
Exercício: implemente em C essa versão de fila
9
![Page 45: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/45.jpg)
Fila: implementação com lista ligada (outra opção)fim
A B C D
Inserção:
• Atualizar o campo prox de fim• Mudar fim para apontar para o novo nó
Remoção:• Basta remover o nó seguinte ao nó dummy
– i.e., fim->prox->prox
Exercício: implemente em C essa versão de fila
9
![Page 46: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/46.jpg)
Fila: implementação com lista ligada (outra opção)fim
A B C D
Inserção:• Atualizar o campo prox de fim
• Mudar fim para apontar para o novo nó
Remoção:• Basta remover o nó seguinte ao nó dummy
– i.e., fim->prox->prox
Exercício: implemente em C essa versão de fila
9
![Page 47: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/47.jpg)
Fila: implementação com lista ligada (outra opção)fim
A B C D
Inserção:• Atualizar o campo prox de fim• Mudar fim para apontar para o novo nó
Remoção:• Basta remover o nó seguinte ao nó dummy
– i.e., fim->prox->prox
Exercício: implemente em C essa versão de fila
9
![Page 48: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/48.jpg)
Fila: implementação com lista ligada (outra opção)fim
A B C D
Inserção:• Atualizar o campo prox de fim• Mudar fim para apontar para o novo nó
Remoção:
• Basta remover o nó seguinte ao nó dummy
– i.e., fim->prox->prox
Exercício: implemente em C essa versão de fila
9
![Page 49: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/49.jpg)
Fila: implementação com lista ligada (outra opção)fim
A B C D
Inserção:• Atualizar o campo prox de fim• Mudar fim para apontar para o novo nó
Remoção:• Basta remover o nó seguinte ao nó dummy
– i.e., fim->prox->prox
Exercício: implemente em C essa versão de fila
9
![Page 50: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/50.jpg)
Fila: implementação com lista ligada (outra opção)fim
A B C D
Inserção:• Atualizar o campo prox de fim• Mudar fim para apontar para o novo nó
Remoção:• Basta remover o nó seguinte ao nó dummy
– i.e., fim->prox->prox
Exercício: implemente em C essa versão de fila
9
![Page 51: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/51.jpg)
Fila: implementação com lista ligada (outra opção)fim
A B C D
Inserção:• Atualizar o campo prox de fim• Mudar fim para apontar para o novo nó
Remoção:• Basta remover o nó seguinte ao nó dummy
– i.e., fim->prox->prox
Exercício: implemente em C essa versão de fila9
![Page 52: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/52.jpg)
Fila: implementação com vetorPrimeira ideia:
• Inserimos no final do vetor: O(1)• Removemos do começo do vetor: O(n)
Segunda ideia:• Variável ini indica o começa da fila• Variável fim indica o fim da fila
A B C D
ini fim
E se, ao inserir, tivermos espaço apenas à esquerda de ini?• podemos mover toda a fila para o começo do vetor• mas isso leva tempo O(n)...
10
![Page 53: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/53.jpg)
Fila: implementação com vetorPrimeira ideia:
• Inserimos no final do vetor: O(1)
• Removemos do começo do vetor: O(n)
Segunda ideia:• Variável ini indica o começa da fila• Variável fim indica o fim da fila
A B C D
ini fim
E se, ao inserir, tivermos espaço apenas à esquerda de ini?• podemos mover toda a fila para o começo do vetor• mas isso leva tempo O(n)...
10
![Page 54: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/54.jpg)
Fila: implementação com vetorPrimeira ideia:
• Inserimos no final do vetor: O(1)• Removemos do começo do vetor: O(n)
Segunda ideia:• Variável ini indica o começa da fila• Variável fim indica o fim da fila
A B C D
ini fim
E se, ao inserir, tivermos espaço apenas à esquerda de ini?• podemos mover toda a fila para o começo do vetor• mas isso leva tempo O(n)...
10
![Page 55: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/55.jpg)
Fila: implementação com vetorPrimeira ideia:
• Inserimos no final do vetor: O(1)• Removemos do começo do vetor: O(n)
Segunda ideia:
• Variável ini indica o começa da fila• Variável fim indica o fim da fila
A B C D
ini fim
E se, ao inserir, tivermos espaço apenas à esquerda de ini?• podemos mover toda a fila para o começo do vetor• mas isso leva tempo O(n)...
10
![Page 56: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/56.jpg)
Fila: implementação com vetorPrimeira ideia:
• Inserimos no final do vetor: O(1)• Removemos do começo do vetor: O(n)
Segunda ideia:• Variável ini indica o começa da fila
• Variável fim indica o fim da fila
A B C D
ini fim
E se, ao inserir, tivermos espaço apenas à esquerda de ini?• podemos mover toda a fila para o começo do vetor• mas isso leva tempo O(n)...
10
![Page 57: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/57.jpg)
Fila: implementação com vetorPrimeira ideia:
• Inserimos no final do vetor: O(1)• Removemos do começo do vetor: O(n)
Segunda ideia:• Variável ini indica o começa da fila• Variável fim indica o fim da fila
A B C D
ini fim
E se, ao inserir, tivermos espaço apenas à esquerda de ini?• podemos mover toda a fila para o começo do vetor• mas isso leva tempo O(n)...
10
![Page 58: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/58.jpg)
Fila: implementação com vetorPrimeira ideia:
• Inserimos no final do vetor: O(1)• Removemos do começo do vetor: O(n)
Segunda ideia:• Variável ini indica o começa da fila• Variável fim indica o fim da fila
A B C D
ini fim
E se, ao inserir, tivermos espaço apenas à esquerda de ini?• podemos mover toda a fila para o começo do vetor• mas isso leva tempo O(n)...
10
![Page 59: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/59.jpg)
Fila: implementação com vetorPrimeira ideia:
• Inserimos no final do vetor: O(1)• Removemos do começo do vetor: O(n)
Segunda ideia:• Variável ini indica o começa da fila• Variável fim indica o fim da fila
A B C D
ini fim
E se, ao inserir, tivermos espaço apenas à esquerda de ini?
• podemos mover toda a fila para o começo do vetor• mas isso leva tempo O(n)...
10
![Page 60: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/60.jpg)
Fila: implementação com vetorPrimeira ideia:
• Inserimos no final do vetor: O(1)• Removemos do começo do vetor: O(n)
Segunda ideia:• Variável ini indica o começa da fila• Variável fim indica o fim da fila
A B C D
ini fim
E se, ao inserir, tivermos espaço apenas à esquerda de ini?• podemos mover toda a fila para o começo do vetor
• mas isso leva tempo O(n)...
10
![Page 61: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/61.jpg)
Fila: implementação com vetorPrimeira ideia:
• Inserimos no final do vetor: O(1)• Removemos do começo do vetor: O(n)
Segunda ideia:• Variável ini indica o começa da fila• Variável fim indica o fim da fila
A B C D
ini fim
E se, ao inserir, tivermos espaço apenas à esquerda de ini?• podemos mover toda a fila para o começo do vetor• mas isso leva tempo O(n)...
10
![Page 62: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/62.jpg)
Fila: implementação com vetor (fila circular)
Solução: considerar o vetor de tamanho N de maneira circular
C
v[0]
D
v[1]
v[2]
v[3]
v[4]
v[5]
v[6]
v[7]
Av[8]
B
v[9]
As manipulações de índices são realizadas módulo N
11
![Page 63: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/63.jpg)
Fila: implementação com vetor (fila circular)
Solução: considerar o vetor de tamanho N de maneira circular
C
v[0]
D
v[1]
v[2]
v[3]
v[4]
v[5]
v[6]
v[7]
Av[8]
B
v[9]
As manipulações de índices são realizadas módulo N
11
![Page 64: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/64.jpg)
Fila: implementação com vetor (fila circular)
Solução: considerar o vetor de tamanho N de maneira circular
C
v[0]
D
v[1]
v[2]
v[3]
v[4]
v[5]
v[6]
v[7]
Av[8]
B
v[9]
As manipulações de índices são realizadas módulo N
11
![Page 65: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/65.jpg)
Fila circular - Estrutura
C
v[0]
D
v[1]
v[2]
v[3]
v[4]
v[5]
v[6]
v[7]
Av[8]
B
v[9]
ini = 8
fim = 2
N = 10
tamanho = 4
1 typedef struct {2 int *v;3 int ini, fim, N, tamanho;4 } Fila;
12
![Page 66: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/66.jpg)
Fila circular - Estrutura
C
v[0]
D
v[1]
v[2]
v[3]
v[4]
v[5]
v[6]
v[7]
Av[8]
B
v[9]
ini = 8
fim = 2
N = 10
tamanho = 4
1 typedef struct {2 int *v;3 int ini, fim, N, tamanho;4 } Fila;
vetor para armazenar os dados
12
![Page 67: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/67.jpg)
Fila circular - Estrutura
C
v[0]
D
v[1]
v[2]
v[3]
v[4]
v[5]
v[6]
v[7]
Av[8]
B
v[9]
ini = 8
fim = 2
N = 10
tamanho = 4
1 typedef struct {2 int *v;3 int ini, fim, N, tamanho;4 } Fila;
início da fila (posição da próxima remoção)
12
![Page 68: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/68.jpg)
Fila circular - Estrutura
C
v[0]
D
v[1]
v[2]
v[3]
v[4]
v[5]
v[6]
v[7]
Av[8]
B
v[9]
ini = 8
fim = 2
N = 10
tamanho = 4
1 typedef struct {2 int *v;3 int ini, fim, N, tamanho;4 } Fila;
fim da fila (posição da próxima inserção)
12
![Page 69: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/69.jpg)
Fila circular - Estrutura
C
v[0]
D
v[1]
v[2]
v[3]
v[4]
v[5]
v[6]
v[7]
Av[8]
B
v[9]
ini = 8
fim = 2
N = 10
tamanho = 4
1 typedef struct {2 int *v;3 int ini, fim, N, tamanho;4 } Fila;
tamanho do vetor alocado
12
![Page 70: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/70.jpg)
Fila circular - Estrutura
C
v[0]
D
v[1]
v[2]
v[3]
v[4]
v[5]
v[6]
v[7]
Av[8]
B
v[9]
ini = 8
fim = 2
N = 10
tamanho = 4
1 typedef struct {2 int *v;3 int ini, fim, N, tamanho;4 } Fila;
tamanho da fila (número de elementos)
12
![Page 71: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/71.jpg)
Fila circular - Inicializar
C
v[0]
D
v[1]
v[2]
v[3]
v[4]
v[5]
v[6]
v[7]
Av[8]
B
v[9]
ini = 8
fim = 2
N = 10
tamanho = 4
1 void inicializar_fila(Fila *f, int N) {
2 f->v = malloc(N*sizeof(int));3 f->ini = 0;4 f->fim = 0;5 f->N = N;6 f->tamanho = 0;7 }
13
![Page 72: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/72.jpg)
Fila circular - Inicializar
C
v[0]
D
v[1]
v[2]
v[3]
v[4]
v[5]
v[6]
v[7]
Av[8]
B
v[9]
ini = 8
fim = 2
N = 10
tamanho = 4
1 void inicializar_fila(Fila *f, int N) {2 f->v = malloc(N*sizeof(int));3 f->ini = 0;4 f->fim = 0;5 f->N = N;6 f->tamanho = 0;7 }
13
![Page 73: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/73.jpg)
Fila circular - Inserção
C
v[0]
D
v[1]
v[2]
v[3]
v[4]
v[5]
v[6]
v[7]
Av[8]
B
v[9]
ini = 8
fim = 2
N = 10
tamanho = 4
1 void enfileira(Fila *f, int x) {
2 f->v[f->fim] = x;3 f->fim = (f->fim + 1) % f->N;4 (f->tamanho)++;5 }
14
![Page 74: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/74.jpg)
Fila circular - Inserção
C
v[0]
D
v[1]
v[2]
v[3]
v[4]
v[5]
v[6]
v[7]
Av[8]
B
v[9]
ini = 8
fim = 2
N = 10
tamanho = 4
1 void enfileira(Fila *f, int x) {2 f->v[f->fim] = x;
3 f->fim = (f->fim + 1) % f->N;4 (f->tamanho)++;5 }
14
![Page 75: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/75.jpg)
Fila circular - Inserção
C
v[0]
D
v[1]
v[2]
v[3]
v[4]
v[5]
v[6]
v[7]
Av[8]
B
v[9]
Eini = 8
fim = 2
N = 10
tamanho = 4
1 void enfileira(Fila *f, int x) {2 f->v[f->fim] = x;
3 f->fim = (f->fim + 1) % f->N;4 (f->tamanho)++;5 }
14
![Page 76: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/76.jpg)
Fila circular - Inserção
C
v[0]
D
v[1]
v[2]
v[3]
v[4]
v[5]
v[6]
v[7]
Av[8]
B
v[9]
Eini = 8
fim = 2
N = 10
tamanho = 4
1 void enfileira(Fila *f, int x) {2 f->v[f->fim] = x;3 f->fim = (f->fim + 1) % f->N;
4 (f->tamanho)++;5 }
14
![Page 77: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/77.jpg)
Fila circular - Inserção
C
v[0]
D
v[1]
v[2]
v[3]
v[4]
v[5]
v[6]
v[7]
Av[8]
B
v[9]
Eini = 8
fim = 3
N = 10
tamanho = 4
1 void enfileira(Fila *f, int x) {2 f->v[f->fim] = x;3 f->fim = (f->fim + 1) % f->N;
4 (f->tamanho)++;5 }
14
![Page 78: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/78.jpg)
Fila circular - Inserção
C
v[0]
D
v[1]
v[2]
v[3]
v[4]
v[5]
v[6]
v[7]
Av[8]
B
v[9]
Eini = 8
fim = 2
N = 10
tamanho = 4
1 void enfileira(Fila *f, int x) {2 f->v[f->fim] = x;3 f->fim = (f->fim + 1) % f->N;4 (f->tamanho)++;5 }
14
![Page 79: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/79.jpg)
Fila circular - Inserção
C
v[0]
D
v[1]
v[2]
v[3]
v[4]
v[5]
v[6]
v[7]
Av[8]
B
v[9]
Eini = 8
fim = 2
N = 10
tamanho = 4
1 void enfileira(Fila *f, int x) {2 f->v[f->fim] = x;3 f->fim = (f->fim + 1) % f->N;4 (f->tamanho)++;5 }
14
![Page 80: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/80.jpg)
Fila circular - Inserção
C
v[0]
D
v[1]
v[2]
v[3]
v[4]
v[5]
v[6]
v[7]
Av[8]
B
v[9]
Eini = 8
fim = 2
N = 10
tamanho = 4
1 void enfileira(Fila *f, int x) {2 f->v[f->fim] = x;3 f->fim = (f->fim + 1) % f->N;4 (f->tamanho)++;5 }
14
![Page 81: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/81.jpg)
Fila circular - Inserção
C
v[0]
D
v[1]
v[2]
v[3]
v[4]
v[5]
v[6]
v[7]
Av[8]
B
v[9]
Eini = 8
fim = 2
N = 10
tamanho = 5
1 void enfileira(Fila *f, int x) {2 f->v[f->fim] = x;3 f->fim = (f->fim + 1) % f->N;4 (f->tamanho)++;5 }
14
![Page 82: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/82.jpg)
Fila circular - Remoção
C
v[0]
D
v[1]
Ev[2]
v[3]
v[4]
v[5]
v[6]
v[7]
v[8]
B
v[9]
Aini = 8
fim = 3
N = 10
tamanho = 5
1 int desenfileira(Fila *f) {
2 int x = f->v[f->ini];3 f->ini = (f->ini + 1) % f->N;4 (f->tamanho)--;5 return x;6 }
15
![Page 83: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/83.jpg)
Fila circular - Remoção
C
v[0]
D
v[1]
Ev[2]
v[3]
v[4]
v[5]
v[6]
v[7]
v[8]
B
v[9]
Aini = 8
fim = 3
N = 10
tamanho = 5
1 int desenfileira(Fila *f) {2 int x = f->v[f->ini];
3 f->ini = (f->ini + 1) % f->N;4 (f->tamanho)--;5 return x;6 }
15
![Page 84: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/84.jpg)
Fila circular - Remoção
C
v[0]
D
v[1]
Ev[2]
v[3]
v[4]
v[5]
v[6]
v[7]
v[8]
B
v[9]
Aini = 8
fim = 3
N = 10
tamanho = 5
x = A
1 int desenfileira(Fila *f) {2 int x = f->v[f->ini];
3 f->ini = (f->ini + 1) % f->N;4 (f->tamanho)--;5 return x;6 }
15
![Page 85: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/85.jpg)
Fila circular - Remoção
C
v[0]
D
v[1]
Ev[2]
v[3]
v[4]
v[5]
v[6]
v[7]
v[8]
B
v[9]
Aini = 8
fim = 3
N = 10
tamanho = 5
x = A
1 int desenfileira(Fila *f) {2 int x = f->v[f->ini];3 f->ini = (f->ini + 1) % f->N;
4 (f->tamanho)--;5 return x;6 }
15
![Page 86: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/86.jpg)
Fila circular - Remoção
C
v[0]
D
v[1]
Ev[2]
v[3]
v[4]
v[5]
v[6]
v[7]
v[8]
B
v[9]
ini = 9
fim = 3
N = 10
tamanho = 5
x = A
1 int desenfileira(Fila *f) {2 int x = f->v[f->ini];3 f->ini = (f->ini + 1) % f->N;
4 (f->tamanho)--;5 return x;6 }
15
![Page 87: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/87.jpg)
Fila circular - Remoção
C
v[0]
D
v[1]
Ev[2]
v[3]
v[4]
v[5]
v[6]
v[7]
v[8]
B
v[9]
ini = 9
fim = 3
N = 10
tamanho = 5
x = A
1 int desenfileira(Fila *f) {2 int x = f->v[f->ini];3 f->ini = (f->ini + 1) % f->N;4 (f->tamanho)--;
5 return x;6 }
15
![Page 88: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/88.jpg)
Fila circular - Remoção
C
v[0]
D
v[1]
Ev[2]
v[3]
v[4]
v[5]
v[6]
v[7]
v[8]
B
v[9]
ini = 9
fim = 3
N = 10
tamanho = 4
x = A
1 int desenfileira(Fila *f) {2 int x = f->v[f->ini];3 f->ini = (f->ini + 1) % f->N;4 (f->tamanho)--;
5 return x;6 }
15
![Page 89: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/89.jpg)
Fila circular - Remoção
C
v[0]
D
v[1]
Ev[2]
v[3]
v[4]
v[5]
v[6]
v[7]
v[8]
B
v[9]
ini = 9
fim = 3
N = 10
tamanho = 4
x = A
1 int desenfileira(Fila *f) {2 int x = f->v[f->ini];3 f->ini = (f->ini + 1) % f->N;4 (f->tamanho)--;5 return x;6 }
15
![Page 90: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/90.jpg)
Um cliente simples
1 int main() {2 int n, x, i;3 Fila f;4 inicializar_fila(&f, 100);5 scanf("%d", &n);6 for (i = 0; i < n; i++) {7 scanf("%d", &x);8 enfileira(&f, x);9 }
10 while(!fila_vazia(f)) {11 x = desenfileira(&f);12 printf("%d ", x);13 }14 printf("\n");15 return 0;16 }
Qual é o problema do código acima?• E se n for maior do que 100?• Poderíamos usar listas ligadas...• Ou aumentar o tamanho do vetor alocado
16
![Page 91: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/91.jpg)
Um cliente simples1 int main() {2 int n, x, i;3 Fila f;
4 inicializar_fila(&f, 100);5 scanf("%d", &n);6 for (i = 0; i < n; i++) {7 scanf("%d", &x);8 enfileira(&f, x);9 }
10 while(!fila_vazia(f)) {11 x = desenfileira(&f);12 printf("%d ", x);13 }14 printf("\n");15 return 0;16 }
Qual é o problema do código acima?• E se n for maior do que 100?• Poderíamos usar listas ligadas...• Ou aumentar o tamanho do vetor alocado
16
![Page 92: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/92.jpg)
Um cliente simples1 int main() {2 int n, x, i;3 Fila f;4 inicializar_fila(&f, 100);
5 scanf("%d", &n);6 for (i = 0; i < n; i++) {7 scanf("%d", &x);8 enfileira(&f, x);9 }
10 while(!fila_vazia(f)) {11 x = desenfileira(&f);12 printf("%d ", x);13 }14 printf("\n");15 return 0;16 }
Qual é o problema do código acima?• E se n for maior do que 100?• Poderíamos usar listas ligadas...• Ou aumentar o tamanho do vetor alocado
16
![Page 93: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/93.jpg)
Um cliente simples1 int main() {2 int n, x, i;3 Fila f;4 inicializar_fila(&f, 100);5 scanf("%d", &n);
6 for (i = 0; i < n; i++) {7 scanf("%d", &x);8 enfileira(&f, x);9 }
10 while(!fila_vazia(f)) {11 x = desenfileira(&f);12 printf("%d ", x);13 }14 printf("\n");15 return 0;16 }
Qual é o problema do código acima?• E se n for maior do que 100?• Poderíamos usar listas ligadas...• Ou aumentar o tamanho do vetor alocado
16
![Page 94: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/94.jpg)
Um cliente simples1 int main() {2 int n, x, i;3 Fila f;4 inicializar_fila(&f, 100);5 scanf("%d", &n);6 for (i = 0; i < n; i++) {7 scanf("%d", &x);
8 enfileira(&f, x);9 }
10 while(!fila_vazia(f)) {11 x = desenfileira(&f);12 printf("%d ", x);13 }14 printf("\n");15 return 0;16 }
Qual é o problema do código acima?• E se n for maior do que 100?• Poderíamos usar listas ligadas...• Ou aumentar o tamanho do vetor alocado
16
![Page 95: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/95.jpg)
Um cliente simples1 int main() {2 int n, x, i;3 Fila f;4 inicializar_fila(&f, 100);5 scanf("%d", &n);6 for (i = 0; i < n; i++) {7 scanf("%d", &x);8 enfileira(&f, x);
9 }10 while(!fila_vazia(f)) {11 x = desenfileira(&f);12 printf("%d ", x);13 }14 printf("\n");15 return 0;16 }
Qual é o problema do código acima?• E se n for maior do que 100?• Poderíamos usar listas ligadas...• Ou aumentar o tamanho do vetor alocado
16
![Page 96: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/96.jpg)
Um cliente simples1 int main() {2 int n, x, i;3 Fila f;4 inicializar_fila(&f, 100);5 scanf("%d", &n);6 for (i = 0; i < n; i++) {7 scanf("%d", &x);8 enfileira(&f, x);9 }
10 while(!fila_vazia(f)) {
11 x = desenfileira(&f);12 printf("%d ", x);13 }14 printf("\n");15 return 0;16 }
Qual é o problema do código acima?• E se n for maior do que 100?• Poderíamos usar listas ligadas...• Ou aumentar o tamanho do vetor alocado
16
![Page 97: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/97.jpg)
Um cliente simples1 int main() {2 int n, x, i;3 Fila f;4 inicializar_fila(&f, 100);5 scanf("%d", &n);6 for (i = 0; i < n; i++) {7 scanf("%d", &x);8 enfileira(&f, x);9 }
10 while(!fila_vazia(f)) {11 x = desenfileira(&f);
12 printf("%d ", x);13 }14 printf("\n");15 return 0;16 }
Qual é o problema do código acima?• E se n for maior do que 100?• Poderíamos usar listas ligadas...• Ou aumentar o tamanho do vetor alocado
16
![Page 98: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/98.jpg)
Um cliente simples1 int main() {2 int n, x, i;3 Fila f;4 inicializar_fila(&f, 100);5 scanf("%d", &n);6 for (i = 0; i < n; i++) {7 scanf("%d", &x);8 enfileira(&f, x);9 }
10 while(!fila_vazia(f)) {11 x = desenfileira(&f);12 printf("%d ", x);13 }14 printf("\n");15 return 0;16 }
Qual é o problema do código acima?• E se n for maior do que 100?• Poderíamos usar listas ligadas...• Ou aumentar o tamanho do vetor alocado
16
![Page 99: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/99.jpg)
Um cliente simples1 int main() {2 int n, x, i;3 Fila f;4 inicializar_fila(&f, 100);5 scanf("%d", &n);6 for (i = 0; i < n; i++) {7 scanf("%d", &x);8 enfileira(&f, x);9 }
10 while(!fila_vazia(f)) {11 x = desenfileira(&f);12 printf("%d ", x);13 }14 printf("\n");15 return 0;16 }
Qual é o problema do código acima?
• E se n for maior do que 100?• Poderíamos usar listas ligadas...• Ou aumentar o tamanho do vetor alocado
16
![Page 100: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/100.jpg)
Um cliente simples1 int main() {2 int n, x, i;3 Fila f;4 inicializar_fila(&f, 100);5 scanf("%d", &n);6 for (i = 0; i < n; i++) {7 scanf("%d", &x);8 enfileira(&f, x);9 }
10 while(!fila_vazia(f)) {11 x = desenfileira(&f);12 printf("%d ", x);13 }14 printf("\n");15 return 0;16 }
Qual é o problema do código acima?• E se n for maior do que 100?
• Poderíamos usar listas ligadas...• Ou aumentar o tamanho do vetor alocado
16
![Page 101: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/101.jpg)
Um cliente simples1 int main() {2 int n, x, i;3 Fila f;4 inicializar_fila(&f, 100);5 scanf("%d", &n);6 for (i = 0; i < n; i++) {7 scanf("%d", &x);8 enfileira(&f, x);9 }
10 while(!fila_vazia(f)) {11 x = desenfileira(&f);12 printf("%d ", x);13 }14 printf("\n");15 return 0;16 }
Qual é o problema do código acima?• E se n for maior do que 100?• Poderíamos usar listas ligadas...
• Ou aumentar o tamanho do vetor alocado
16
![Page 102: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/102.jpg)
Um cliente simples1 int main() {2 int n, x, i;3 Fila f;4 inicializar_fila(&f, 100);5 scanf("%d", &n);6 for (i = 0; i < n; i++) {7 scanf("%d", &x);8 enfileira(&f, x);9 }
10 while(!fila_vazia(f)) {11 x = desenfileira(&f);12 printf("%d ", x);13 }14 printf("\n");15 return 0;16 }
Qual é o problema do código acima?• E se n for maior do que 100?• Poderíamos usar listas ligadas...• Ou aumentar o tamanho do vetor alocado
16
![Page 103: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/103.jpg)
Exemplos de aplicações
Algumas aplicações de filas:
• Gerenciamento de fila de impressão• Buffer do teclado• Escalonamento de processos• Comunicação entre aplicativos/computadores• Percurso de estruturas de dados complexas (grafos etc.)
17
![Page 104: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/104.jpg)
Exemplos de aplicações
Algumas aplicações de filas:• Gerenciamento de fila de impressão
• Buffer do teclado• Escalonamento de processos• Comunicação entre aplicativos/computadores• Percurso de estruturas de dados complexas (grafos etc.)
17
![Page 105: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/105.jpg)
Exemplos de aplicações
Algumas aplicações de filas:• Gerenciamento de fila de impressão• Buffer do teclado
• Escalonamento de processos• Comunicação entre aplicativos/computadores• Percurso de estruturas de dados complexas (grafos etc.)
17
![Page 106: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/106.jpg)
Exemplos de aplicações
Algumas aplicações de filas:• Gerenciamento de fila de impressão• Buffer do teclado• Escalonamento de processos
• Comunicação entre aplicativos/computadores• Percurso de estruturas de dados complexas (grafos etc.)
17
![Page 107: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/107.jpg)
Exemplos de aplicações
Algumas aplicações de filas:• Gerenciamento de fila de impressão• Buffer do teclado• Escalonamento de processos• Comunicação entre aplicativos/computadores
• Percurso de estruturas de dados complexas (grafos etc.)
17
![Page 108: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/108.jpg)
Exemplos de aplicações
Algumas aplicações de filas:• Gerenciamento de fila de impressão• Buffer do teclado• Escalonamento de processos• Comunicação entre aplicativos/computadores• Percurso de estruturas de dados complexas (grafos etc.)
17
![Page 109: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/109.jpg)
Pilha• Remove primeiro objetos inseridos há menos tempo
• LIFO (last-infirst-out): último a entrar é primeiro a sair
É como uma pilha de pratos:• Empilha os pratos limpos sobre os que já estão na pilha• Desempilha o prato de cima para usar
18
![Page 110: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/110.jpg)
Pilha• Remove primeiro objetos inseridos há menos tempo• LIFO (last-infirst-out): último a entrar é primeiro a sair
É como uma pilha de pratos:• Empilha os pratos limpos sobre os que já estão na pilha• Desempilha o prato de cima para usar
18
![Page 111: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/111.jpg)
Pilha• Remove primeiro objetos inseridos há menos tempo• LIFO (last-infirst-out): último a entrar é primeiro a sair
É como uma pilha de pratos:
• Empilha os pratos limpos sobre os que já estão na pilha• Desempilha o prato de cima para usar
18
![Page 112: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/112.jpg)
Pilha• Remove primeiro objetos inseridos há menos tempo• LIFO (last-infirst-out): último a entrar é primeiro a sair
É como uma pilha de pratos:• Empilha os pratos limpos sobre os que já estão na pilha
• Desempilha o prato de cima para usar
18
![Page 113: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/113.jpg)
Pilha• Remove primeiro objetos inseridos há menos tempo• LIFO (last-infirst-out): último a entrar é primeiro a sair
É como uma pilha de pratos:• Empilha os pratos limpos sobre os que já estão na pilha• Desempilha o prato de cima para usar
18
![Page 114: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/114.jpg)
PilhaOperações:
• Empilha (push): adiciona no topo da pilha• Desempilha (pop): remove do topo da pilha
19
![Page 115: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/115.jpg)
PilhaOperações:
• Empilha (push): adiciona no topo da pilha
• Desempilha (pop): remove do topo da pilha
19
![Page 116: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/116.jpg)
PilhaOperações:
• Empilha (push): adiciona no topo da pilha• Desempilha (pop): remove do topo da pilha
19
![Page 117: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/117.jpg)
PilhaOperações:
• Empilha (push): adiciona no topo da pilha• Desempilha (pop): remove do topo da pilha
Exemplo:
19
![Page 118: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/118.jpg)
PilhaOperações:
• Empilha (push): adiciona no topo da pilha• Desempilha (pop): remove do topo da pilha
Exemplo: Empilha(A)
19
![Page 119: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/119.jpg)
PilhaOperações:
• Empilha (push): adiciona no topo da pilha• Desempilha (pop): remove do topo da pilha
Exemplo: Empilha(A)
A
19
![Page 120: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/120.jpg)
PilhaOperações:
• Empilha (push): adiciona no topo da pilha• Desempilha (pop): remove do topo da pilha
Exemplo: Empilha(B)
A
19
![Page 121: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/121.jpg)
PilhaOperações:
• Empilha (push): adiciona no topo da pilha• Desempilha (pop): remove do topo da pilha
Exemplo: Empilha(B)
A
B
19
![Page 122: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/122.jpg)
PilhaOperações:
• Empilha (push): adiciona no topo da pilha• Desempilha (pop): remove do topo da pilha
Exemplo: Desempilha()
A
B
19
![Page 123: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/123.jpg)
PilhaOperações:
• Empilha (push): adiciona no topo da pilha• Desempilha (pop): remove do topo da pilha
Exemplo: Desempilha()
A
19
![Page 124: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/124.jpg)
PilhaOperações:
• Empilha (push): adiciona no topo da pilha• Desempilha (pop): remove do topo da pilha
Exemplo: Empilha(C)
A
19
![Page 125: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/125.jpg)
PilhaOperações:
• Empilha (push): adiciona no topo da pilha• Desempilha (pop): remove do topo da pilha
Exemplo: Empilha(C)
A
C
19
![Page 126: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/126.jpg)
PilhaOperações:
• Empilha (push): adiciona no topo da pilha• Desempilha (pop): remove do topo da pilha
Exemplo: Empilha(D)
A
C
19
![Page 127: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/127.jpg)
PilhaOperações:
• Empilha (push): adiciona no topo da pilha• Desempilha (pop): remove do topo da pilha
Exemplo: Empilha(D)
A
C
D
19
![Page 128: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/128.jpg)
PilhaOperações:
• Empilha (push): adiciona no topo da pilha• Desempilha (pop): remove do topo da pilha
Exemplo: Desempilha()
A
C
D
19
![Page 129: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/129.jpg)
PilhaOperações:
• Empilha (push): adiciona no topo da pilha• Desempilha (pop): remove do topo da pilha
Exemplo: Desempilha()
A
C
19
![Page 130: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/130.jpg)
PilhaOperações:
• Empilha (push): adiciona no topo da pilha• Desempilha (pop): remove do topo da pilha
Exemplo: Desempilha()
A
C
19
![Page 131: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/131.jpg)
PilhaOperações:
• Empilha (push): adiciona no topo da pilha• Desempilha (pop): remove do topo da pilha
Exemplo: Desempilha()
A
19
![Page 132: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/132.jpg)
Pilha: implementação com vetor
A B C D
topoDefinição:1 typedef struct {2 int *v;3 int topo;4 } Pilha;
Inserção:1 void empilhar(Pilha *p, int i) {2 p->v[p->topo] = i;3 (p->topo)++;4 }
Remoção:1 int desempilhar(Pilha *p) {2 (p->topo)--;3 return p->v[p->topo];4 }
20
![Page 133: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/133.jpg)
Pilha: implementação com vetor
A B C D
topoDefinição:1 typedef struct {2 int *v;3 int topo;4 } Pilha;
vetor para armazenar os dados
Inserção:1 void empilhar(Pilha *p, int i) {2 p->v[p->topo] = i;3 (p->topo)++;4 }
Remoção:1 int desempilhar(Pilha *p) {2 (p->topo)--;3 return p->v[p->topo];4 }
20
![Page 134: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/134.jpg)
Pilha: implementação com vetor
A B C D
topoDefinição:1 typedef struct {2 int *v;3 int topo;4 } Pilha;
fim da pilha (posição da próxima inserção)
Inserção:1 void empilhar(Pilha *p, int i) {2 p->v[p->topo] = i;3 (p->topo)++;4 }
Remoção:1 int desempilhar(Pilha *p) {2 (p->topo)--;3 return p->v[p->topo];4 }
20
![Page 135: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/135.jpg)
Pilha: implementação com vetor
A B C D
topoDefinição:1 typedef struct {2 int *v;3 int topo;4 } Pilha;
Inserção:1 void empilhar(Pilha *p, int i) {2 p->v[p->topo] = i;3 (p->topo)++;4 }
Remoção:1 int desempilhar(Pilha *p) {2 (p->topo)--;3 return p->v[p->topo];4 }
20
![Page 136: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/136.jpg)
Pilha: implementação com vetor
A B C D
topoDefinição:1 typedef struct {2 int *v;3 int topo;4 } Pilha;
Inserção:1 void empilhar(Pilha *p, int i) {2 p->v[p->topo] = i;3 (p->topo)++;4 }
Remoção:1 int desempilhar(Pilha *p) {2 (p->topo)--;3 return p->v[p->topo];4 }
20
![Page 137: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/137.jpg)
Pilha: implementação com lista ligadaApós empilhar A, B e C:
pC B A
Inserção:1 void empilhar(No **pilha, int x) {2 No *novo = malloc(sizeof(No));3 novo->dado = x;4 novo->prox = pilha;5 *pilha = novo;6 }
Remoção:1 int desempilhar(No **pilha) {2 int x = pilha->dado;3 No *topo = *pilha;4 *pilha = topo->prox;5 free(topo);6 return x;7 }
21
![Page 138: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/138.jpg)
Pilha: implementação com lista ligadaApós empilhar A, B e C:
pC B A
Inserção:1 void empilhar(No **pilha, int x) {2 No *novo = malloc(sizeof(No));3 novo->dado = x;4 novo->prox = pilha;5 *pilha = novo;6 }
Remoção:1 int desempilhar(No **pilha) {2 int x = pilha->dado;3 No *topo = *pilha;4 *pilha = topo->prox;5 free(topo);6 return x;7 }
21
![Page 139: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/139.jpg)
Pilha: implementação com lista ligadaApós empilhar A, B e C:
pC B A
Inserção:1 void empilhar(No **pilha, int x) {2 No *novo = malloc(sizeof(No));3 novo->dado = x;4 novo->prox = pilha;5 *pilha = novo;6 }
Remoção:1 int desempilhar(No **pilha) {2 int x = pilha->dado;3 No *topo = *pilha;4 *pilha = topo->prox;5 free(topo);6 return x;7 }
21
![Page 140: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/140.jpg)
Pilha: implementação com lista ligadaApós empilhar A, B e C:
pC B A
Inserção:1 void empilhar(No **pilha, int x) {2 No *novo = malloc(sizeof(No));3 novo->dado = x;4 novo->prox = pilha;5 *pilha = novo;6 }
Remoção:1 int desempilhar(No **pilha) {2 int x = pilha->dado;3 No *topo = *pilha;4 *pilha = topo->prox;5 free(topo);6 return x;7 }
21
![Page 141: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/141.jpg)
Exemplos de aplicações
Algumas aplicações de pilhas:
• Balanceamento de parênteses
– expressões matemáticas, linguagens de programação,HTML...
• Cálculo e conversão de notações
– pré-fixa, pós-fixa, infixa (com parênteses)
• Percurso de estruturas de dados complexas (grafos etc.)• Recursão
Veremos algumas dessas aplicações na próxima unidade
22
![Page 142: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/142.jpg)
Exemplos de aplicações
Algumas aplicações de pilhas:• Balanceamento de parênteses
– expressões matemáticas, linguagens de programação,HTML...
• Cálculo e conversão de notações
– pré-fixa, pós-fixa, infixa (com parênteses)
• Percurso de estruturas de dados complexas (grafos etc.)• Recursão
Veremos algumas dessas aplicações na próxima unidade
22
![Page 143: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/143.jpg)
Exemplos de aplicações
Algumas aplicações de pilhas:• Balanceamento de parênteses
– expressões matemáticas, linguagens de programação,HTML...
• Cálculo e conversão de notações
– pré-fixa, pós-fixa, infixa (com parênteses)
• Percurso de estruturas de dados complexas (grafos etc.)• Recursão
Veremos algumas dessas aplicações na próxima unidade
22
![Page 144: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/144.jpg)
Exemplos de aplicações
Algumas aplicações de pilhas:• Balanceamento de parênteses
– expressões matemáticas, linguagens de programação,HTML...
• Cálculo e conversão de notações
– pré-fixa, pós-fixa, infixa (com parênteses)
• Percurso de estruturas de dados complexas (grafos etc.)• Recursão
Veremos algumas dessas aplicações na próxima unidade
22
![Page 145: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/145.jpg)
Exemplos de aplicações
Algumas aplicações de pilhas:• Balanceamento de parênteses
– expressões matemáticas, linguagens de programação,HTML...
• Cálculo e conversão de notações– pré-fixa, pós-fixa, infixa (com parênteses)
• Percurso de estruturas de dados complexas (grafos etc.)• Recursão
Veremos algumas dessas aplicações na próxima unidade
22
![Page 146: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/146.jpg)
Exemplos de aplicações
Algumas aplicações de pilhas:• Balanceamento de parênteses
– expressões matemáticas, linguagens de programação,HTML...
• Cálculo e conversão de notações– pré-fixa, pós-fixa, infixa (com parênteses)
• Percurso de estruturas de dados complexas (grafos etc.)
• Recursão
Veremos algumas dessas aplicações na próxima unidade
22
![Page 147: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/147.jpg)
Exemplos de aplicações
Algumas aplicações de pilhas:• Balanceamento de parênteses
– expressões matemáticas, linguagens de programação,HTML...
• Cálculo e conversão de notações– pré-fixa, pós-fixa, infixa (com parênteses)
• Percurso de estruturas de dados complexas (grafos etc.)• Recursão
Veremos algumas dessas aplicações na próxima unidade
22
![Page 148: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/148.jpg)
Exemplos de aplicações
Algumas aplicações de pilhas:• Balanceamento de parênteses
– expressões matemáticas, linguagens de programação,HTML...
• Cálculo e conversão de notações– pré-fixa, pós-fixa, infixa (com parênteses)
• Percurso de estruturas de dados complexas (grafos etc.)• Recursão
Veremos algumas dessas aplicações na próxima unidade
22
![Page 149: MC-202 — Unidade 7 Filas e Pilhas - ic.unicamp.brrafael/cursos/1s2017/mc202/slides/... · MC-202 — Unidade 7 Filas e Pilhas Rafael C. S. Schouery rafael@ic.unicamp.br Universidade](https://reader030.vdocuments.pub/reader030/viewer/2022032713/5c8a441b09d3f2ac578c7409/html5/thumbnails/149.jpg)
Exercícios
1. Complete as implementações (com vetor e lista ligada) depilhas e filas com as operações auxiliares: inicializar,eh_vazia, eh_cheia (para vetor).
2. Um deque (double-endedqueue) é um conjunto dinâmicocom operações: insere_inicio, insere_fim,remove_inicio, remove_fim. Implemente um dequeutilizando listas ligadas.
23