¿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
Tal vez este código te pueda servir:
https://monstruosoft.wordpress.com/2017/03/12/tare...
C
¿Y si yo lo hago tú automáticamente habrás aprendido? Nadie te obliga a nada, busca otra carrera.