Ir ao conteúdo
  • Cadastre-se
The_Oicle

Pilha sem o uso de funções

Recommended Posts

Quero criar uma pilha e não sei fazer porque todos os materiais que encontrei na internet usavam funções e pilha.

 

Quero somente a pilha para eu entender bem.

 

Tem como vocês escrevessem um código de exemplo? Só para estudar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×