Ir ao conteúdo
  • Cadastre-se

Pilha sem o uso de funções


The_Oicle

Posts recomendados

pense nisso como uma pilha de pratos ao que só podemos fazer operações ao final da pilha, pois não faz sentido tirar um prato debaixo da pilha. A pilha sempre vai ter um tamanho limitado, pois não existe memória infinita.

 

regras a seguir para utilizar pilhas:

1-Tamanho limitado: por muita memória dinâmica que usamos, "TODA" memória tem um fim, pois ela é física, e tudo que é físico tem limitações, nesse caso tem limitação de espaço, si for dinâmica pode variar de tamanho, mais ainda assim não será ilimitada.

 

2-Operaçoes somente ao final da lista: Si vamos agregar algo na pilha, tem que ser no final, e si vamos retirar algo também, sempre do final. ;) A regra se chama LIFO Last In First Out, "Ultimo a entrar será sempre o primeiro em sair", recorde isso pois é o mais importante.

#include <stdio.h>#include <string.h>#include <stdlib.h>int main () {    const int TAM = 4;    char pilhaNomes[TAM][100];  //pilha do tamanho de TAM nomes de maximo 100 letras cada    int pilha = 0;              //contador para o tamanho da pilha    char nome[100];             //variavel temporal para leer o nome e depois guardar na pilha.    int op;                     //opçao para o menu    int continuar = 1;          //condiçao para loop principal    int i;        while(continuar){                printf("1-intruduzir \n2-retirar \n3-Listar \n0-Sair\n?: ");        scanf("%d%*c", &op);                system("cls");        switch (op) {            case 1:                if ( pilha < TAM ){                    printf("Nome para introduzir a pilha: ");                    scanf("%99[^\n]s%*c", nome);                    strcpy(pilhaNomes[pilha], nome);                    pilha++;                    printf("Nomes na pilha = %d\n\n", pilha);                }else{                    printf("A pilha atingiu seu tamanho maximo, imposivel agregar mais nomes, somente podemos retirar nomes da pilha de momento.\n\n");                }                break;            case 2:                if ( pilha > 0 ){                    pilha--;                    printf("%s retirado da pilha.\n", pilhaNomes[pilha] );                    printf("Nomes na pilha = %d\n\n", pilha);                }else{                    printf("Nao temos mais nomes por retirar\n\n");                }                break;            case 3:                for ( i = 0; i < pilha; i++ ){                    printf("%d %s\n", i+1, pilhaNomes[i] );                }                printf("\n\n");                break;            case 0:                continuar = 0;                break;            default:                break;        }    }        getchar();    return 0;}

Acho que com isso da para entender mais ou menos. Si tiver duvidas pergunte

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...