Tu comunidad de Seguridad Informatica

C - Tipos Abstractos de Datos I - pilas o stacks by osnaraus Info1810 Para ver Todo el contenido del foro es necesario estar Registrado! C - Tipos Abstractos de Datos I - pilas o stacks by osnaraus Info1810
C - Tipos Abstractos de Datos I - pilas o stacks by osnaraus Info1810 Antes de comentar o Aportar es Obligado Leer Las: Reglas | Rules C - Tipos Abstractos de Datos I - pilas o stacks by osnaraus Info1810
C - Tipos Abstractos de Datos I - pilas o stacks by osnaraus Info1810Ya Esta Disponible al publico "LeProject" el Videojuego del Foro Click Aquí Para Ver el Post. C - Tipos Abstractos de Datos I - pilas o stacks by osnaraus Info1810
C - Tipos Abstractos de Datos I - pilas o stacks by osnaraus Info1810Pitbull Security Labs "Extras" Esta Disponible! [ENTRA]C - Tipos Abstractos de Datos I - pilas o stacks by osnaraus Info1810

No estás conectado. Conéctate o registrate

Ver el tema anterior Ver el tema siguiente Ir abajo  Mensaje [Página 1 de 1.]

1osnaraus 

avatar
Usuario
Usuario

Dom Ago 22, 2010 9:28 pm
Bueno, empiezo con una serie de posts que nos van a ayudar a manejar tipos abstractos de datos en C.
En este primer posteo voy a explicarles brevemente qué son y nos iniciaremos con pilas (stacks)

Los Tipos Abstractos de Datos (TAD) son básicamente estructuras definidas por el usuario con sus respectivos métodos.
Para la implementación en C++ definiríamos clases (classes) pero en C son estructuras (structs).

Pilas:

Podemos definir el tipo de dato pila (stack) como un tipo especial de lista (list), donde cada inserción o borrrado se
efectúa de uno en uno, siendo éste llamado el tope de la pila.
Si hacemos la analogía, para entenderlo mejor, tendríamos que imaginarnos una pila de platos en nuestra cocina.
El primero en "sacar" fue el último en posicionar. Es por eso que normalmente a este TAD se lo denomina LIFO (last in first out) - el primero en ingresar, es el último en salir.
Cuando ingresamos un dato a la pila se lo denomina "push"
Cuando lo sacamos de la pila, denominamos a este acto "pop"

Implementacion de pilas usando arrays y structs.

Código:
//pila.h

#define MAXPILA 10
typedef char tipo_dato;
typedef enum {FALSE=0, TRUE} bool;

typedef struct nodo_pila{
  int tope;
  tipo_dato valor[MAXPILA];
} pila;

bool vacia (pila *);
bool llena (pila *);
void inicializ (pila *);
void push (tipo_dato, pila *);
void pop (tipo_dato, pila *);
void Error(char *);


// funcion push, ingresa un dato nuevo a la pila
void push (tipo_dato dato, pila *ptr_pila)
{
  if (ptr_pila->tope >=MAXPILA)
    Error ("Pila llena");
  else
    ptr_pila->valor[ptr_pila->tope++]=dato;
}


//------
//------

//funcion pop , saca un dato de la pila
void pop (tipo_dato *ptr_dato, pila *ptr_pila)
{
  if (ptr_pila->tope <=0)
    Error ("Pila vacia");
  else
    *ptr_dato=ptr_pila->valor[--ptr_pila->tope];
}


//--------
//--------

// funcion Error
void Error (char *s)
{
  fprinf (stderr,"%s\n",s);
  exit (1);
}

//-------
//-------

//funcion vacia: devuelve TRUE si pila vacia (no 0)
bool vacia (pila *ptr_pila)
{
 return ptr_pila->tope<=0;
}

//-------
//-------

//funcion llena: devuelve TRUE si pila llena (no 0)
bool llena (pila *ptr_pila)
{
 return ptr_pila->tope>=MAXPILA;
}

//-------
//-------

//funcion inicializ: inicializa la pila vacia

void inicializ (pila *ptr_pila)
{
  ptr_pila->tope=0;
}


Bueno, este es 100 % tutorial mío.
Si les gustó, voy a seguir con esta breve introduccion a los TAD en C.
(si no, no sigo más)
Se escuchan criticas.
Saludos a todos en mi primer post.

To be continued ---->

2-Slandg- 

-Slandg-
Administrador
Administrador

http://www.pitbullsecurity.org
Lun Ago 23, 2010 1:26 pm
A mi si me gusto :twisted: espero sigas asi!!! ;)

3amigal 

amigal
Usuario
Usuario

Dom Feb 19, 2012 8:46 am
me parece muy bien este tipo de post, y muy didactico, gracias brother por compartir, me ha parecido bastante claro lo de CLASE y ESTRUCTURA: excelente comparación entre los 2 lenguajes, saludos

4Contenido patrocinado 



Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje [Página 1 de 1.]

Permisos de este foro:
No puedes responder a temas en este foro.