estrutura de dados pilha by aquiles burlamaqui. definição uma pilha é uma das várias estruturas...
TRANSCRIPT
![Page 1: Estrutura de Dados Pilha by Aquiles Burlamaqui. Definição Uma pilha é uma das várias estruturas de dados que admitem remoção de elementos e inserção de](https://reader036.vdocuments.com.br/reader036/viewer/2022062418/552fc0f9497959413d8b6335/html5/thumbnails/1.jpg)
Estrutura de Dados
Pilha
by Aquiles Burlamaqui
![Page 2: Estrutura de Dados Pilha by Aquiles Burlamaqui. Definição Uma pilha é uma das várias estruturas de dados que admitem remoção de elementos e inserção de](https://reader036.vdocuments.com.br/reader036/viewer/2022062418/552fc0f9497959413d8b6335/html5/thumbnails/2.jpg)
Definição
Uma pilha é uma das várias estruturas de dados que admitem remoção de elementos e inserção de novos elementos. Mais especificamente, uma pilha (= stack) é uma estrutura sujeita à seguinte regra de operação: sempre que houver uma remoção, o elemento removido é o que está na estrutura há menos tempo.
Em outras palavras, o primeiro objeto a ser inserido na pilha é o último a ser removido. Essa política é conhecida pela sigla LIFO (= Last-In-First-Out).
![Page 3: Estrutura de Dados Pilha by Aquiles Burlamaqui. Definição Uma pilha é uma das várias estruturas de dados que admitem remoção de elementos e inserção de](https://reader036.vdocuments.com.br/reader036/viewer/2022062418/552fc0f9497959413d8b6335/html5/thumbnails/3.jpg)
Analise de Código
Execute os passos:1) Baixar os arquivos pilha.h, pilha.c e main.c
2) Gerar a biblioteca pilha.o
3) Compilar o main.c
4) Executar o main.c e ententer o seu funcionamento;
5) Entender o pilha.c (funções push e pop)
6) Desenhar uma memória e fazer um passo a passo da execução desse programa e as mudanças ocorridas na memória.
7) Construir uma função para retornar o tamanho da pilha.
8) Utilizar o comando free para liberar a memória durante o pop().
![Page 4: Estrutura de Dados Pilha by Aquiles Burlamaqui. Definição Uma pilha é uma das várias estruturas de dados que admitem remoção de elementos e inserção de](https://reader036.vdocuments.com.br/reader036/viewer/2022062418/552fc0f9497959413d8b6335/html5/thumbnails/4.jpg)
pilha.h
![Page 5: Estrutura de Dados Pilha by Aquiles Burlamaqui. Definição Uma pilha é uma das várias estruturas de dados que admitem remoção de elementos e inserção de](https://reader036.vdocuments.com.br/reader036/viewer/2022062418/552fc0f9497959413d8b6335/html5/thumbnails/5.jpg)
pilha.c
![Page 6: Estrutura de Dados Pilha by Aquiles Burlamaqui. Definição Uma pilha é uma das várias estruturas de dados que admitem remoção de elementos e inserção de](https://reader036.vdocuments.com.br/reader036/viewer/2022062418/552fc0f9497959413d8b6335/html5/thumbnails/6.jpg)
main.c
![Page 7: Estrutura de Dados Pilha by Aquiles Burlamaqui. Definição Uma pilha é uma das várias estruturas de dados que admitem remoção de elementos e inserção de](https://reader036.vdocuments.com.br/reader036/viewer/2022062418/552fc0f9497959413d8b6335/html5/thumbnails/7.jpg)
Execução - main
pilha p1;
p1.tamanho = 0;
p1.topo = NULL;
push(10,&p1);
push(15,&p1);
push(20,&p1);
pop(&p1);
pop(&p1);
pop(&p1);
pop(&p1;
tamanho topo *
p1
??
![Page 8: Estrutura de Dados Pilha by Aquiles Burlamaqui. Definição Uma pilha é uma das várias estruturas de dados que admitem remoção de elementos e inserção de](https://reader036.vdocuments.com.br/reader036/viewer/2022062418/552fc0f9497959413d8b6335/html5/thumbnails/8.jpg)
Execução - main
pilha p1;
p1.tamanho = 0;
p1.topo = NULL;
push(10,&p1);
push(15,&p1);
push(20,&p1);
pop(&p1);
pop(&p1);
pop(&p1);
pop(&p1;
tamanho topo *
p1
0?
![Page 9: Estrutura de Dados Pilha by Aquiles Burlamaqui. Definição Uma pilha é uma das várias estruturas de dados que admitem remoção de elementos e inserção de](https://reader036.vdocuments.com.br/reader036/viewer/2022062418/552fc0f9497959413d8b6335/html5/thumbnails/9.jpg)
Execução - main
pilha p1;
p1.tamanho = 0;
p1.topo = NULL;
push(10,&p1);
push(15,&p1);
push(20,&p1);
pop(&p1);
pop(&p1);
pop(&p1);
pop(&p1;
tamanho topo *
p1
0
![Page 10: Estrutura de Dados Pilha by Aquiles Burlamaqui. Definição Uma pilha é uma das várias estruturas de dados que admitem remoção de elementos e inserção de](https://reader036.vdocuments.com.br/reader036/viewer/2022062418/552fc0f9497959413d8b6335/html5/thumbnails/10.jpg)
Execução - main
pilha p1;
p1.tamanho = 0;
p1.topo = NULL;
push(10,&p1);
push(15,&p1);
push(20,&p1);
pop(&p1);
pop(&p1);
pop(&p1);
pop(&p1;
tamanho topo *
p1
0
![Page 11: Estrutura de Dados Pilha by Aquiles Burlamaqui. Definição Uma pilha é uma das várias estruturas de dados que admitem remoção de elementos e inserção de](https://reader036.vdocuments.com.br/reader036/viewer/2022062418/552fc0f9497959413d8b6335/html5/thumbnails/11.jpg)
Execução - push(10,&p1);void push(int item, pilha *p) {
if(p->topo==NULL) {
p->tamanho = 1;
p->topo = malloc(sizeof(elemento));
p->topo->valor = item;
p->topo->proximo = NULL;
printf("Tava vazio, coloquei o primeiro: %i\n",item);
}else {
elemento * temp = p->topo;
p->topo = malloc(sizeof(elemento));
p->topo->valor = item;
p->topo->proximo = temp;
printf("Empilhei mais um...:%i\n",item);
}
}
tamanho topo *
p1
0
VERDADEIRO
![Page 12: Estrutura de Dados Pilha by Aquiles Burlamaqui. Definição Uma pilha é uma das várias estruturas de dados que admitem remoção de elementos e inserção de](https://reader036.vdocuments.com.br/reader036/viewer/2022062418/552fc0f9497959413d8b6335/html5/thumbnails/12.jpg)
Execução - push(10,&p1);void push(int item, pilha *p) {
if(p->topo==NULL) {
p->tamanho = 1;
p->topo = malloc(sizeof(elemento));
p->topo->valor = item;
p->topo->proximo = NULL;
printf("Tava vazio, coloquei o primeiro: %i\n",item);
}else {
elemento * temp = p->topo;
p->topo = malloc(sizeof(elemento));
p->topo->valor = item;
p->topo->proximo = temp;
printf("Empilhei mais um...:%i\n",item);
}
}
tamanho topo *
p1
1
![Page 13: Estrutura de Dados Pilha by Aquiles Burlamaqui. Definição Uma pilha é uma das várias estruturas de dados que admitem remoção de elementos e inserção de](https://reader036.vdocuments.com.br/reader036/viewer/2022062418/552fc0f9497959413d8b6335/html5/thumbnails/13.jpg)
Execução - push(10,&p1);void push(int item, pilha *p) {
if(p->topo==NULL) {
p->tamanho = 1;
p->topo = malloc(sizeof(elemento));
p->topo->valor = item;
p->topo->proximo = NULL;
printf("Tava vazio, coloquei o primeiro: %i\n",item);
}else {
elemento * temp = p->topo;
p->topo = malloc(sizeof(elemento));
p->topo->valor = item;
p->topo->proximo = temp;
printf("Empilhei mais um...:%i\n",item);
}
}
tamanho topo *
p1
1
?
valor proximo *
?
![Page 14: Estrutura de Dados Pilha by Aquiles Burlamaqui. Definição Uma pilha é uma das várias estruturas de dados que admitem remoção de elementos e inserção de](https://reader036.vdocuments.com.br/reader036/viewer/2022062418/552fc0f9497959413d8b6335/html5/thumbnails/14.jpg)
Execução - push(10,&p1);void push(int item, pilha *p) {
if(p->topo==NULL) {
p->tamanho = 1;
p->topo = malloc(sizeof(elemento));
p->topo->valor = item;
p->topo->proximo = NULL;
printf("Tava vazio, coloquei o primeiro: %i\n",item);
}else {
elemento * temp = p->topo;
p->topo = malloc(sizeof(elemento));
p->topo->valor = item;
p->topo->proximo = temp;
printf("Empilhei mais um...:%i\n",item);
}
}
tamanho topo *
p1
1
10
valor proximo *
?
![Page 15: Estrutura de Dados Pilha by Aquiles Burlamaqui. Definição Uma pilha é uma das várias estruturas de dados que admitem remoção de elementos e inserção de](https://reader036.vdocuments.com.br/reader036/viewer/2022062418/552fc0f9497959413d8b6335/html5/thumbnails/15.jpg)
Execução - push(10,&p1);void push(int item, pilha *p) {
if(p->topo==NULL) {
p->tamanho = 1;
p->topo = malloc(sizeof(elemento));
p->topo->valor = item;
p->topo->proximo = NULL;
printf("Tava vazio, coloquei o primeiro: %i\n",item);
}else {
elemento * temp = p->topo;
p->topo = malloc(sizeof(elemento));
p->topo->valor = item;
p->topo->proximo = temp;
printf("Empilhei mais um...:%i\n",item);
}
}
tamanho topo *
p1
1
10
valor proximo *
![Page 16: Estrutura de Dados Pilha by Aquiles Burlamaqui. Definição Uma pilha é uma das várias estruturas de dados que admitem remoção de elementos e inserção de](https://reader036.vdocuments.com.br/reader036/viewer/2022062418/552fc0f9497959413d8b6335/html5/thumbnails/16.jpg)
Execução - main
pilha p1;
p1.tamanho = 0;
p1.topo = NULL;
push(10,&p1);
push(15,&p1);
push(20,&p1);
pop(&p1);
pop(&p1);
pop(&p1);
pop(&p1;
tamanho topo *
p1
1
10
valor proximo *
![Page 17: Estrutura de Dados Pilha by Aquiles Burlamaqui. Definição Uma pilha é uma das várias estruturas de dados que admitem remoção de elementos e inserção de](https://reader036.vdocuments.com.br/reader036/viewer/2022062418/552fc0f9497959413d8b6335/html5/thumbnails/17.jpg)
Execução - main
tamanho topo *
p1
1
10
valor proximo *
void push(int item, pilha *p) {
if(p->topo==NULL) {
p->tamanho = 1;
p->topo = malloc(sizeof(elemento));
p->topo->valor = item;
p->topo->proximo = NULL;
printf("Tava vazio, coloquei o primeiro: %i\n",item);
}else {
elemento * temp = p->topo;
p->topo = malloc(sizeof(elemento));
p->topo->valor = item;
p->topo->proximo = temp;
printf("Empilhei mais um...:%i\n",item);
}
}
FALSO
![Page 18: Estrutura de Dados Pilha by Aquiles Burlamaqui. Definição Uma pilha é uma das várias estruturas de dados que admitem remoção de elementos e inserção de](https://reader036.vdocuments.com.br/reader036/viewer/2022062418/552fc0f9497959413d8b6335/html5/thumbnails/18.jpg)
Execução - main
tamanho topo *
p1
1
10
valor proximo *
void push(int item, pilha *p) {
if(p->topo==NULL) {
p->tamanho = 1;
p->topo = malloc(sizeof(elemento));
p->topo->valor = item;
p->topo->proximo = NULL;
printf("Tava vazio, coloquei o primeiro: %i\n",item);
}else {
elemento * temp = p->topo;
p->topo = malloc(sizeof(elemento));
p->topo->valor = item;
p->topo->proximo = temp;
printf("Empilhei mais um...:%i\n",item);
}
}
temp
![Page 19: Estrutura de Dados Pilha by Aquiles Burlamaqui. Definição Uma pilha é uma das várias estruturas de dados que admitem remoção de elementos e inserção de](https://reader036.vdocuments.com.br/reader036/viewer/2022062418/552fc0f9497959413d8b6335/html5/thumbnails/19.jpg)
Execução - maintamanho topo *
p1
1
10
valor proximo *
void push(int item, pilha *p) {
if(p->topo==NULL) {
p->tamanho = 1;
p->topo = malloc(sizeof(elemento));
p->topo->valor = item;
p->topo->proximo = NULL;
printf("Tava vazio, coloquei o primeiro: %i\n",item);
}else {
elemento * temp = p->topo;
p->topo = malloc(sizeof(elemento));
p->topo->valor = item;
p->topo->proximo = temp;
printf("Empilhei mais um...:%i\n",item);
}
}
temp
?
valor proximo *
?
![Page 20: Estrutura de Dados Pilha by Aquiles Burlamaqui. Definição Uma pilha é uma das várias estruturas de dados que admitem remoção de elementos e inserção de](https://reader036.vdocuments.com.br/reader036/viewer/2022062418/552fc0f9497959413d8b6335/html5/thumbnails/20.jpg)
Execução - maintamanho topo *
p1
1
10
valor proximo *
void push(int item, pilha *p) {
if(p->topo==NULL) {
p->tamanho = 1;
p->topo = malloc(sizeof(elemento));
p->topo->valor = item;
p->topo->proximo = NULL;
printf("Tava vazio, coloquei o primeiro: %i\n",item);
}else {
elemento * temp = p->topo;
p->topo = malloc(sizeof(elemento));
p->topo->valor = item;
p->topo->proximo = temp;
printf("Empilhei mais um...:%i\n",item);
}
}
temp
15
valor proximo *
?
![Page 21: Estrutura de Dados Pilha by Aquiles Burlamaqui. Definição Uma pilha é uma das várias estruturas de dados que admitem remoção de elementos e inserção de](https://reader036.vdocuments.com.br/reader036/viewer/2022062418/552fc0f9497959413d8b6335/html5/thumbnails/21.jpg)
Execução - maintamanho topo *
p1
1
10
valor proximo *
void push(int item, pilha *p) {
if(p->topo==NULL) {
p->tamanho = 1;
p->topo = malloc(sizeof(elemento));
p->topo->valor = item;
p->topo->proximo = NULL;
printf("Tava vazio, coloquei o primeiro: %i\n",item);
}else {
elemento * temp = p->topo;
p->topo = malloc(sizeof(elemento));
p->topo->valor = item;
p->topo->proximo = temp;
printf("Empilhei mais um...:%i\n",item);
}
}
temp
15
valor proximo *