Código de C/Visual C - Implementación de una pila mediante lista enlazada en C++

Imágen de perfil

Implementación de una pila mediante lista enlazada en C++gráfica de visualizaciones


C/Visual C

Publicado el 13 de Febrero del 2002 por Administrador
18.866 visualizaciones desde el 13 de Febrero del 2002. Una media de 28 por semana
Implementación de una pila mediante lista enlazada que incluye las funciones para crear_pila, apilar_pila, desapilar_pila y es_vacia.

Versión 1

Publicado el 13 de Febrero del 2002gráfica de visualizaciones de la versión: Versión 1
18.867 visualizaciones desde el 13 de Febrero del 2002. Una media de 28 por semana
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

Implementación en C++ de una pila mediante listas enlazadas. Para ello utilizamos una cabecera fictícia. Realización en forma dinámica.
Se crea una estructura con un entero clave y un apuntador a estructura siguiente.

{Pre}={Existe estructura tipo_pila pila}
   void crear(struct tipo_pila **pila)
{Post}={Se ha creado la pila apuntadora a NULL}

{Pre}={Existe elemento pila, elem tiene valor}
   void apilar_pila(struct tipo_pila *pila, int elem)
{Post}={pila=pila+elemento añadido}

{Pre}={Existe elemento pila, existe elem}
   void desapilar_pila(struct tipo_pila *pila, int *elem)
{Post}={pila=pila-ultimo valor añadido y elem apunta al valor descargado de la pila}

{Pre}={Existe pila}
   void es_vacia(struct tipo_pila *pila)
{Post}={Cierto si la pila está vacía. Falso por lo contrario}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
/* -------------------------------------------------- */
/* Implementación de una pila mediante lista enlazada */
/* ------ http://www.lawebdelprogramador.com -------- */
/* -------------------------------------------------- */
#include <stdio.h>
#include <stdlib.h>
 
/* declaracion de la pila*/
struct tipo_pila
{
	int clave;
	struct tipo_pila *sig;
};
 
/* Cabeceras de prototipos de funciones */
void crear_pila(struct tipo_pila **pila);
int es_vacia(struct tipo_pila *pila);
void apilar_pila(struct tipo_pila *pila, int elem);
void desapilar_pila(struct tipo_pila *pila, int *elem);
 
void crear_pila(struct tipo_pila **pila)
{
	*pila=(struct tipo_pila *) malloc(sizeof(struct tipo_pila));
	(*pila)->sig=NULL;
}
 
void apilar_pila(struct tipo_pila *pila, int elem)
{
	struct tipo_pila *nuevo;
	nuevo=(struct tipo_pila *) malloc(sizeof(struct tipo_pila));
	nuevo->clave=elem;
	nuevo->sig=pila->sig;
	pila->sig=nuevo;
}
 
void desapilar_pila(struct tipo_pila *pila, int *elem)
{
	struct tipo_pila *aux;
	aux=pila->sig;
	*elem=aux->clave;
	pila->sig=aux->sig;
	free(aux);
}
 
int es_vacia(struct tipo_pila *pila)
{
	return (pila->sig==NULL);
}
 
/* programa principal */
main(void)
{
	struct tipo_pila *pila;
	int elem;
	crear_pila(&pila);
	if (es_vacia(pila)) printf("\nPila vacia!");
	apilar_pila(pila, 1);
	desapilar_pila(pila, &elem);
}



Comentarios sobre la versión: Versión 1 (0)


No hay comentarios
 

Comentar la versión: Versión 1

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios

http://lwp-l.com/s85