¿ESTRUCTURA DE DATOS EN C++?

BUENAS A TODOS, EL DÍA DE HOY ME DIERON LA CLASE DE ESTRUCTURA Y NOS DIERON ÉSTE CODIGO.

TRABAJAMOS EN DEVC++ Y EL PROGRAMA CORRE PERO HAY QUE INSERTAR ELEMENTOS EN LA PILA Y NO SÉ CÓMO.

PORFA... AYUDENME A COMPLETAR EL CODIGO.

EL MAIN NO TIENE NADA YA QUE NO SE QUE DEBE IR ALLI.

#include<stdio.h>

#include<stdlib.h>

#include<conio.h>

#define MAXPILA 9 //variable global (Constante)

struct pila{

char item [MAXPILA];

int tope;

};

typedef struct pila TDAP; //alias para la estructutra

int push (TDAP &p , char e);

int pop (TDAP &p , char &e);

int empty(TDAP p);

int stacktop(TDAP p, char &e);

void eliminar_elem(TDAP &p);

int main()

{

}

int push (TDAP &p , char e)

{

if(p.tope==MAXPILA-1)

return 0 ; //pila llena

else

{

p.tope++;

p.item[p.tope] = e;

return 1;

}

}

int pop (TDAP &p , char &e)

{

if (empty(p)) // if (p.tope==-1);

return 0; // pila vacia

else

{

e=p.item[p.tope];

p.tope--;

return 1;

}

}

int empty (TDAP p)

{

if(p.tope==-1)

return 1;

return 0;

}

int stacktop(TDAP p, char &e)

{

if(empty(p))

return 0;

else

{

e=p.item[p.tope];

return 1;

}

}

void eliminar_elem(TDAP &p)

{

TDAP temp;

char e;

for (int i = 0 ; i<3 && !empty(p);i++)

{

pop(p,e);

push(temp,e);

if(i==2);

pop(temp,e);

}

for (int i=0;i<2;i++)

{

pop(temp,e);

push(p,e);

}

}

Comments

  • En el main, tendras que poner el menú que te permita elegir cada opción y el salir del programa, no entiendo muy bien como usar este sistema con el puntero p, pero te presento un boceto para que te oriente

    int main()

    {

    char sel, elem;

    int p;

    printf("MENU DE LA PILA\n1)Ingresar Dato\n2)Sacar Dato\3)Mostrar pila\n4)Salir\nOpcion: ");

    sel=getchar();

    switch (sel){

    case '1':

    printf("Ingrese una letra a la pila: ");

    elem=getchar();

    //faltaria edefinir p

    push (TDAP &p, elem);

    break;

    case '2':

    break;

    case '3':

    break;

    case '4:

    break;

    default:

    }

    }

    Te paso un codigo completo usando una clase donde en el main se prueba que funciona nada mas

    #include <iostream>

    using namespace std;

    #define STACK_SIZE 256 /* capacidad máxima */

    typedef char arreglo[STACK_SIZE];

    class Stack {

    int sp; /* puntero de lectura/escritura */

    int items; /* número de elementos en lista */

    int itemsize; /* tamaño del elemento */

    arreglo pila; /* el arreglo */

    public:

    // constructor

    Stack() {

    sp = STACK_SIZE-1;

    items = 0;

    itemsize = 1;

    }

    // destructor

    ~Stack() {};

    /* regresa el número de elementos en lista */

    int size() { return items; }

    /* regresa 1 si no hay elementos en la lista, o sea, si la lista está vacia */

    int empty() { return items == 0; }

    /* insertar elemento a la lista */

    int put(char d)

    {

    if ( sp >= 0) {

    pila[sp] = d;

    sp --;

    items ++;

    }

    return d;

    }

    /* retirar elemento de la lista */

    int get()

    {

    if ( ! empty() ) {

    sp ++;

    items --;

    }

    return pila[sp];

    }

    }; // fin de clase Stack

    // probando la pila.

    // Nota: obseve cómo los elementos se ingresan en orden desde la A hasta la Z,

    // y como los mismos se recuperán en orden inverso.

    int main()

    {

    int d;

    Stack s; // s es un objeto (instancia) de la clase Stack

    // llenando la pila

    for (d='A'; d<='Z'; d++) s.put(d);

    cout << "Items =" << s.size() << endl;

    // vaciando la pila

    while ( s.size() ) cout << (char)s.get() << " ";

    cout << "\nItems =" << s.size() << endl;

    cout << "\nPara terminar oprima <Enter>...";

    cin.get();

    return 0;

    }

    Saludos

    Antonio

  • ¿Y si yo lo hago tú automáticamente habrás aprendido? Nadie te obliga a nada, busca otra carrera.

Sign In or Register to comment.