Pilha - (Push)
Binary Road :: Lógica e Técnica de Programação :: Programação Orientada a Objeto :: Análise de Algoritmos :: Organização e Recuperação da Informação :: Estudo
Página 1 de 1
Pilha - (Push)
Pilha com lista dinamica
- Código:
#include <iostream>
using namespace std;
struct pilha
{
int info;
pilha *prox;
};
typedef struct pilha l;
pilha *inicializa();
int menu();
pilha *push(pilha *topo, int decimal);
pilha *remove(pilha *topo);
pilha *request_new(pilha *celula_ant);
pilha *pop(pilha *topo);
void main()
{
pilha *topo;
int op, x;
topo=inicializa();
do{
op=menu();
if(op == 1)
{
system("cls");
cout<< "\n\nDigite o valor em decimal para coverte-lo em binario\n\t";
cin>> x;
topo=push(topo, x);
system("pause");
}
else
if(op == 2)
{
system("cls");
if(topo != NULL)
topo=pop(topo);
else
cout<< "\n\n\nA pilha esta vazia, nem um valor convertido ainda\n\n\n";
system("pause");
}
}while(op != 3);
}
int menu()
{
int op;
do{
system("cls");
cout<< "\t1- Conveter de decimal para binario (push)\n";
cout<< "\t2- Imprimir (pop)\n";
cout<< "\t3- Sair\n";
cout<< "\n\tDigite a opcao desejada\n\t";
cin>> op;
if(op < 1 || op > 3)
{
system("cls");
cout<< "\n\n\nO valor de sua opcao nao corresponde ao menu\n\n\n";
system("pause");
}
}while(op < 1 || op > 3);
return op;
}
pilha *inicializa()
{
return NULL;
}
pilha *push(pilha *topo, int decimal)
{
int resto=0, val=decimal;
if(topo != NULL)
{
topo=remove(topo);
while(val >= 2)
{
topo=request_new(topo);
resto= val % 2;
topo->info=resto;
val= (val-resto)/2;
}
topo=request_new(topo);
topo->info=val;
}
else
{
while(val >= 2)
{
topo=request_new(topo);
resto= val % 2;
topo->info=resto;
val= (val-resto)/2;
}
topo=request_new(topo);
topo->info=val;
}
return topo;
}
pilha *remove(pilha *topo)
{
pilha *p=topo->prox, *pp;
while(p != NULL)
{
pp=p->prox;
free(p);
p=pp;
}
free(topo);
return NULL;
}
pilha *request_new(pilha *celula_ant)
{
pilha *novo;
novo=(pilha*) malloc (sizeof(pilha));
novo->prox=celula_ant;
return novo;
}
pilha *pop(pilha *topo)
{
pilha *ant;
while(topo != NULL)
{
cout<< topo->info << endl;
ant=topo;
topo=topo->prox;
free(ant);
}
return topo;
}
Renancr- Mensagens : 118
Data de inscrição : 08/03/2010
Binary Road :: Lógica e Técnica de Programação :: Programação Orientada a Objeto :: Análise de Algoritmos :: Organização e Recuperação da Informação :: Estudo
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos