A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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.

Apresentações semelhantes


Apresentação em tema: "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."— Transcrição da apresentação:

1 Estrutura de Dados Pilha by Aquiles Burlamaqui

2 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).

3 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().

4 pilha.h

5 pilha.c

6 main.c

7 Execução - main pilha p1; p1.tamanho = 0; p1.topo = NULL; push(10,&p1); push(15,&p1); push(20,&p1); pop(&p1); pop(&p1; tamanhotopo * p1 ? ?

8 Execução - main pilha p1; p1.tamanho = 0; p1.topo = NULL; push(10,&p1); push(15,&p1); push(20,&p1); pop(&p1); pop(&p1; tamanhotopo * p1 0 ?

9 Execução - main pilha p1; p1.tamanho = 0; p1.topo = NULL; push(10,&p1); push(15,&p1); push(20,&p1); pop(&p1); pop(&p1; tamanhotopo * p1 0

10 Execução - main pilha p1; p1.tamanho = 0; p1.topo = NULL; push(10,&p1); push(15,&p1); push(20,&p1); pop(&p1); pop(&p1; tamanhotopo * p1 0

11 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); } tamanhotopo * p1 0 VERDADEIRO

12 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); } tamanhotopo * p1 1

13 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); } tamanhotopo * p1 1 ? valorproximo * ?

14 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); } tamanhotopo * p1 1 10 valorproximo * ?

15 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); } tamanhotopo * p1 1 10 valorproximo *

16 Execução - main pilha p1; p1.tamanho = 0; p1.topo = NULL; push(10,&p1); push(15,&p1); push(20,&p1); pop(&p1); pop(&p1; tamanhotopo * p1 1 10 valorproximo *

17 Execução - main tamanhotopo * p1 1 10 valorproximo * 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

18 Execução - main tamanhotopo * p1 1 10 valorproximo * 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

19 Execução - main tamanhotopo * p1 1 10 valorproximo * 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 ? valorproximo * ?

20 Execução - main tamanhotopo * p1 1 10 valorproximo * 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 valorproximo * ?

21 Execução - main tamanhotopo * p1 1 10 valorproximo * 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 valorproximo *


Carregar ppt "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."

Apresentações semelhantes


Anúncios Google