Pilas

Iniciado por Beginner Web, 26 Septiembre 2018, 04:20 AM

0 Miembros y 1 Visitante están viendo este tema.

Beginner Web

Hola a todos, aqui de nuevo, segun esta definicion de datos no entiendo como seria la implementacion de esta estructura de datos de tipo pila, todas las operaciones de pila con registros, arreglos y listas ya las se emplear, salvo esta estructura en particular, alguien me ayuda?
Código (cpp) [Seleccionar]
const int MAX=10;
typedef int contenedor[MAX];
typedef struct tpila{
contenedor datos1;
contenedor datos2;
};//La primera posicion del segundo arreglo se utiliza como cima


7w7

ThunderCls

Lo que muestras no es una implementación es solo una definición de tipo de datos. Por otra parte no se para que querrías usar dos arrays en tu definición de tipo de datos pila. Por ultimo te recomendaría definir una clase en lugar de una estructura. En la web existen miles de códigos de ejemplo
Suerte
-[ "...I can only show you the door. You're the one that has to walk through it." – Morpheus (The Matrix) ]-
http://reversec0de.wordpress.com
https://github.com/ThunderCls/

Beginner Web

#2
Todavia no llegue a lo que es POO jiji
Esto era lo que tenia que hacer, gracias por corregir mi error no era una implementacion, era una definicion de una estructura de datos  ;-)
Código (cpp) [Seleccionar]
#include <iostream>
#include <stdlib.h>

using namespace std;

const int MAX=10;
typedef int contenedor[MAX];
typedef struct tpila{
contenedor datos1;
contenedor datos2;
};
void binario(int n);
void init_stack(tpila &pila);
void push_stack(tpila &pila, int nuevo);
bool full_stack(tpila pila);
bool empty_stack(tpila pila);
int pop_stack(tpila &pila);
int top_stack(tpila pila);

int main()
{
binario(12);
cout<<"FIN DEL PROGRAMA"<<endl;
system("pause");
}

void binario(int n)
{
tpila pila;
init_stack(pila);
while(n!=0){
push_stack(pila,n%2);
n/=2;
}
cout<<"Binario: ";
while(empty_stack(pila)==false){
cout<<pop_stack(pila);
}
cout<<endl;
}

void init_stack(tpila &pila)
{
pila.datos2[0]=-1;
}

void push_stack(tpila &pila, int nuevo)
{
if(full_stack(pila)==true){
cout<<"PILAS LLENAS"<<endl;
}
else{
if(pila.datos2[0]<MAX-1){
pila.datos2[0]++;
pila.datos1[pila.datos2[0]]=nuevo;
}
else{
pila.datos2[0]++;
if(pila.datos2[0]=MAX){
pila.datos2[0]++;
}
pila.datos2[pila.datos2[0]-MAX]=nuevo;
}
}
}

bool full_stack(tpila pila)
{
return pila.datos2[0]==MAX*2-1;
}
bool empty_stack(tpila pila)
{
return pila.datos2[0]==-1;
}

int pop_stack(tpila &pila)
{
int aux;
if(empty_stack(pila)==true){
aux=-1;
}
else{
if(pila.datos2[0]>MAX){
aux=pila.datos2[pila.datos2[0]-MAX];
pila.datos2[0]--;
}
else{
if(pila.datos2[0]==MAX){
pila.datos2[0]--;
}
aux=pila.datos1[pila.datos2[0]];
pila.datos2[0]--;
}
}
return aux;
}

int top_stack(tpila pila)
{
int aux;
if(empty_stack(pila)==true){
aux=-1;
}
else{
if(pila.datos2[0]>MAX){
aux=pila.datos2[pila.datos2[0]-MAX];
}
else{
if(pila.datos2[0]==MAX){
pila.datos2[0]--;
}
aux=pila.datos1[pila.datos2[0]];
}
}
return aux;
}
7w7