- LukinhaAdmin
- Mensagens : 5
Pontos : 17
Reputação : 2
Data de inscrição : 05/05/2017
Idade : 33
Localização : Bandeirantes
PILHA DINÂMICA
Sáb Jul 01, 2017 11:53 am
Definição
Operações em Pilha estática
Inicialização
Tamanho daPilha
Exibir Pilha
Inserir elemento na Pilha
Excluir elemento da Pilha
Reinicializar Pilha
Videos para reforços ( ABRA OS SPOILERS )
ATIVIDADE DE FIXAÇÃO ( ABRA O SPOILER )
É uma lista linear em que todas as inserções, retiradas e, geralmente, todos os acessos são feitos em apenas um extremo da lista. Os itens são colocados um sobre o outro. O item inserido mais recentemente está no topo e o inserido menos recentemente no f
Propriedade: o último item inserido é o primeiro item que pode ser retirado da lista. São chamadas listas lifo (“last-in, first-out”). Existe uma ordem linear para pilhas, do “mais recente para o menos recente”. É ideal para processamento de estruturas aninhadas de profundidade imprevisível. Uma pilha contém uma seqüência de obrigações adiadas. A ordem de remoção garante que as estruturas mais internas serão processadas antes das mais externas.
PILHA DINÂMICA: O campo Tamanho evita a contagem do número de itens na função Tamanho. Cada célula de uma pilha contém um item da pilha e um ponteiro para outra célula. O registro TipoPilha contém um ponteiro para o topo da pilha (célula cabeça) e um ponteiro para o fundo da pilha.
A construção do protótipo de um elemento da Pilha Para determinar um elemento da pilha vamos nos servir do tipo struct.
- Código:
typedef int TIPOCHAVE;
typedef struct{
TIPOCHAVE chave;
}REGISTRO;
typedef struct aux{
REGISTRO reg;
struct aux* prox;
}ELEMENTO;
typedef ELEMENTO* PONT;
typedef struct{
PONT topo;
}PILHA;
Operações em Pilha estática
Inicialização
- Código:
//Função:
void inicializarPilha(PILHA *p){
p->topo = NULL; //Indicar que nao há ngm no topo
}
Tamanho daPilha
- Código:
///Função:
int tamanhoPilha(PILHA *p){
int tamanho =0;
PONT percorrer = p->topo; //percorrer toda a pilha
while (percorrer != NULL){ //Enquanto nao chegar no fim da pilha
tamanho++;
percorrer = percorrer->prox; //Recebe o procximo numero
}
return tamanho;
}
Exibir Pilha
- Código:
//Função:
void exibirPilha (PILHA *p){
PONT percorrer = p->topo;
printf("Pilha: \ ");
while (percorrer != NULL){ //enquanto a pilha nao chegar ao fim
printf("%d ", percorrer->reg.chave); //imprime a chave atual
percorrer = percorrer->prox; //faz o percorrer andar uma casa
}
}
Inserir elemento na Pilha
- Código:
//Função:
int inserirNumeroPilha(PILHA* p, REGISTRO reg){
PONT novo = (PONT) malloc(sizeof(ELEMENTO)); //Criando o novo elemento e alocando memoria para ele
novo->reg = reg; //Atribuindo o valor escolido para o novo elemento
novo->prox = p->topo; //Fazer o novo elemento apontar para o antigo topo
p->topo = novo; //Fazer o topo ser o novo elemento
return 0;
}
Excluir elemento da Pilha
- Código:
//Função:
int excluirNumero(PILHA* p){
if(p->topo == NULL){ //Testando se a lista nao esta vazia
return -1;
}
PONT apagar = p->topo; // pega o endereço do topo e o guarda
free(apagar); //apaga o conteudo do topo
return 0;
}
Reinicializar Pilha
- Código:
//Função:
void reinicializar(PILHA* p){
PONT pos = p->topo;
while (pos != NULL){ //enquanto a pilha nao chegar ao fim
PONT apagar = pos; // atribui ao apagar o valor da posição
pos = pos->prox; //pega a proxima posição e atrubio ao PONT pos
free(apagar);
}
p->topo = NULL;
}
Videos para reforços ( ABRA OS SPOILERS )
- [ED] Aula 42 - Pilha Dinâmica - Introdução:
- [ED] Aula 43 - Pilha Dinâmica - Informações:
- [ED] Aula 44 - Pilha Dinâmica - Inserção e Remoção:
ATIVIDADE DE FIXAÇÃO ( ABRA O SPOILER )
- Spoiler:
Permissões neste sub-fórum
Não podes responder a tópicos
|
|