Ir ao conteúdo
  • Cadastre-se

Pilha com alocação dinâmica


FebenSss

Posts recomendados

Boa Tarde galera, queria saber como implemento uma pilha no meu programa e como fazer uma alocação dinâmica nele, li alguns materiais, tentei resolver porém sem sucesso, é só para aprendizado mesmo.

#include <stdio.h>
#include <stdlib.h>

//Estrutura aluno.
struct Aluno{
int ra,idade;
char nome[50];
}al;

void cadastrarAluno();
void consultarAluno();

//Função que cadastra um aluno.
void cadastrarAluno(){
printf("\n\tNOME DO ALUNO: ");
scanf("%s",al.nome);
printf("\n\tIDADE: ");
scanf("%d",&al.idade);
printf("\n\tRA: ");
scanf("%d",&al.ra);
system("cls");
main();
}

//Função que consulta um cadastro e imprimi na tela.
void consultarAluno(){
int con;

printf("\n\tDIGITE O RA DO ALUNO QUE DESEJA CONSULTAR\n\n\n");
printf("\n\tRA: ");
scanf("%d",&con);
system("cls");
if (con==al.ra){
printf("\n\tNOME: ",al.nome);
printf("\n\tIDADE: ",al.idade);
printf("\n\tRA: ",al.ra);
}
}




int main(int argc, char *argv[])
{
int op;

printf("\n\n\tMENU DE opções.\n\n\n");
printf("\n\t1-CADASTRAR ALUNO.");
printf("\n\t2-CONSULTAR ALUNO.");
printf("\n\t3-SAIR.");
printf("\n\n\tOPCAO: ");
scanf("%d",&op);
system("cls");
switch (op){
case 1: cadastrarAluno(); break;
case 2: consultarAluno(); break;
case 3: exit; break;
default: printf("\n\tOPCAO INVALIDA!!!\n\n\n");
}

system("PAUSE");
return 0;
}

Link para o comentário
Compartilhar em outros sites

Olá FebenSss!

Descrevo abaixo em resumo como criar uma pilha dinâmica.

Depois de ter Adicionado as bibliotecas necessárias, defina o tamanho máximo da sua pilha:

#define maximo 10 // Isto é só um exemplo

Acredito que tudo começa criando, pelo meu entendimento três ponteiros:

1º Primeiro Ponteiro: int *variável; // Este aponta sempre pra um espaço livre de memória

2º Segundo Ponteiro: int *variável; // Este aponta sempre pra o Primeiro elemento da pilha, ou topo

3ª Terceiro Ponteiro: int *variável; // Este aponta sempre para o fim da pilha, ou o último elemento.

Para o primeiro ponteiro, o que aponta pra um lugar de memória livre Faz - se assim:

variável = ( int * ) malloc ( maximo *sizeof ( int ) ); // Aqui, alocamos memória para a pilha.

É sempre bom, acho até que normal usar-mos um trechinho de código pra nos informar

se a memória foi alocada ou não, então isto vem logo abaixo.


if(!variável primeiro ponteiro){
printf("\nNao foi possivel alocar memoria");
exit(1);// O programa fecha
}

Agora, o próximo passo é criar as funções para inserir elementos na pilha, exibir e remover.

Veja se estas dicas ajuda tá certo?

abraço!!

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para 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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!