Compartilhe
Ver o tópico anteriorIr em baixoVer o tópico seguinte
avatar
Mensagens : 2
Pontos : 7
Reputação : 1
Data de inscrição : 05/05/2017
Idade : 27
Localização : Bandeirantes
Ver perfil do usuário

PILHA ESTÁTICA

em Sab Jul 01, 2017 11:41 am
Reputação da mensagem: 100% (1 votos)
Definição

É 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 ESTÁTICA: Os itens da pilha são armazenados em posições de memória. Como as inserções e as retiradas ocorrem no topo da pilha, um cursor chamado Topo é utilizado para controlar a posição do item no topo da pilha. Os itens são armazenados em um vetor de tamanho suficiente para conter a pilha. O outro campo do mesmo registro contém o índice do item no topo da pilha. A constante Max define o tamanho máximo permitido para a 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{
    REGISTRO num;
}ELEMENTO;

typedef struct{
    int topo;
    ELEMENTO A[MAX];
}PILHA;

Operações em Pilha estática

Inicialização

Código:
//Função:
void inicializarPilha (PILHA *p){
    p->topo = -1;
}

Tamanho daPilha

Código:
///Função:
int retornarQuantidade (PILHA *p){
    return p->topo += 1;
}

Exibir Pilha

Código:
//Função:
void exibirPilha (PILHA *p){
    int i;
    printf("Pilha: \ ");
    for (i = p->topo ; i >= 0; i--){    //Começando do topo para baixo
        printf("%i ", p->A[i].reg.chave);
    }

Inserir elemento na Pilha

Código:
//Função:
int inserirNumero (PILHA *p, REGISTRO num){
    if (p->topo >= MAX-1){   //Testando se há espaço
        return -1;
    }
    p->topo += 1;        //Aumenta o valor do topo
    p->A[p->topo].num = num; //Atribui a posição topo o valor do registro
    return 0;
}

Excluir elemento da Pilha

Código:
//Função:
int excluirNumero (PILHA *p){
    if (p->topo == MAX-1){   //Se ela nao estiver vazia
        return -1;
    }
    p->topo-=1;             // Basta diminuir um valor do topo
    return 0;
}

Reinicializar Pilha

Código:
//Função:
void reinicializar (PILHA *p){
    p->topo = -1;
}

Videos para reforços ( ABRA OS SPOILERS )
[ED] Aula 40 - Pilha Estática - Informações:



[ED] Aula 41 - Pilha Estática - Inserção e Remoção:



ATIVIDADE DE FIXAÇÃO ( ABRA O SPOILER )
Spoiler:

Clique no link abaixo \/ :
Ver o tópico anteriorVoltar ao TopoVer o tópico seguinte
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum