Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouVictor Cava Alterado mais de 10 anos atrás
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 *
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.