Alguien me puede ayudar a terminar un algoritmo en c relacionados con las pilas, solo me falta que los datos ingresados no se repitan en una pila dinámica.....
Alguien me puede explicar como hacerlo :huh: .... según tengo entendido tengo que crear otra estructura y llevar los datos que se han ingresado a la pila auxiliar cuando se ingresen el nuevo elemento recorrerla e ir comparando si esta el nuevo dato y si no esta se agrega y se devuelven los datos a la pila original y si esta pues no se agrega y se devuelve los datos a la pila original.
Alguien me puede dar algunos ejemplos de como crear este algoritmo.
gracias de ante mano
yo había hecho algo hace unos meses pero sin tener bien los conceptos de pilas y colas, hoy por hoy ya he usado pilas y colas en c++. Esto es un .h de un proyecto (http://foro.elhacker.net/programacion_cc/notacion_polaca_inversa-t358012.0.html) que tenía no se si te sirve realmente, está en c
también en la librería standard hay soporte para pilas y colas,
queue (http://www.cplusplus.com/reference/stl/queue/)
stack (http://www.cplusplus.com/reference/stl/stack/)
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// UTN FRGP TSP
// BS
// EMAIL: david_bs@live.com
// 09-09-2011
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#ifndef _PILA_H_
#define _PILA_H_
//
char pila[256];
//
const char* P_Pila()
{
return pila;
}
void P_Constructor(int cantidad_de_elementos)
{
memset(pila, 'X', sizeof(char)*(cantidad_de_elementos));
memset(&pila[cantidad_de_elementos], 0, sizeof(char));
}
void P_Destructor()
{
}
void P_Inicializar(const char* buffer)
{
int len=strlen(buffer);
char backup[256];
int index;
for(index=0;index<len;index++)
backup[index]=buffer[index];
backup[len]=0;
strcpy(pila, backup);
}
void P_Push(int len, char elemento)
{
int index;
for(index=0; index<len;index++){
if(pila[index]=='X'){
pila[index]=elemento;
break;
}
}
}
void P_Pop(int len)
{
int index;
for(index=(len-1); index>=0;index--){
if(pila[index]!='X'){
V_Push(len,pila[index]);
pila[index]='X';
break;
}
}
}
void P_Quitar(int pos_elemento)
{
pila[pos_elemento]='X';
}
int P_Tope(int len)
{
int index;
for(index=0; index<len;index++){
if(pila[index]=='X'){
return index;
}
}
return len-1;
}
int P_Elementos(int len)
{
int elementos=0;
int index;
for(index=0; index<len;index++){
if(pila[index]!='X'){
elementos++;
}
}
return elementos;
}
/*void P_Mostrar(int len)
{
int c=0;
int index;
//int len=strlen(pila);
for(index=0;index<len;index++){
if(pila[index] != 'X'){
printf("%c", pila[index]);
c++;
}
}
if(c==0) printf("vacia\n");
printf("\n");
}*/
//
#endif