Вы находитесь на странице: 1из 6

Capítulo 2: MEMORIA ESTÁTICA Y DINÁMICA.

IMPLEMENTACIÓN
DE ESTRUCTURAS DE DATOS LINEALES

2.6 Pila
Es una colección de datos que se caracteriza por manejar los datos de forma LIFO

• LIFO – Last In First Out


• último elemento en entrar, es el primero en salir
• solo se puede agregar y quitar elementos por uno de los extremos TOPE/INICIO/FRENTE
• las pilas no son estructuras de datos, para su representación e implementación se
pueden utilizar
o arreglos
o listas

Tope /
Inicio
Aplicaciones en la programación

• deshacer en Word
• retroceder en los navegadores

Operaciones básicas con listas

• Insertar -> apilar( ) / push( )


• Eliminar -> desapilar( ) / pop( )
• Recorrido
• Consultar un elemento especifico

Estado

• Pila vacía
• Pila llena -> solo en el caso de un arreglo para pila
• Cuantos elementos hay en la pila
typedef struct _nodo {
int valor;
struct _nodo *siguiente;
} tipoNodo;
typedef tipoNodo *pNodo; //para el nodo con el dato
typedef tipoNodo *Pila; //para el inicio

/* Funciones con pilas: */


void Push(Pila *l, int v);
int Pop(Pila *l);

void Push(Pila *pila, int v)


{
pNodo nuevo= NULL;

/* Crear un nodo nuevo */


nuevo = (pNodo)malloc(sizeof(tipoNodo));
nuevo->valor = v;

if(*pila == NULL)
nuevo->siguiente = NULL;
else
/* Añadimos nodo en la pila al inicio */
nuevo->siguiente = *pila;

/* Ahora, el comienzo de nuestra pila es el nuevo nodo */


*pila = nuevo;
}

int Pop(Pila *pila)


{
pNodo aux; /* variable auxiliar para manipular nodo */
int v; /* variable auxiliar para retorno */

/* Nodo apunta al primer elemento de la pila */


aux = *pila;

if(aux==NULL)
return 0; /* Si no hay nodos en la pila retornamos 0 */
else{
/* Asignamos pila al nodo siguiente */
*pila = aux->siguiente;

/* Guardamos el valor para retorno */


v = aux->valor;

/* Borrar el nodo */
free(aux);
return v;
}
}
2.7 Cola
Es una colección de datos que se caracteriza por manejar los datos de forma FIFO

• FIFO – First In First Out


• Primero en entrar es el primero en salir
• Solo se agrega elementos al final de la cola
• Solo se quita elementos por el inicio de la cola
• las colas no son estructuras de datos, para su representación e implementación se
pueden utilizar
o arreglos
o listas

ENTRADA SALIDA
Aplicaciones en la programación

• cola de impresión en el sistema operativo


• cola de transacciones en sistemas TPS

Operaciones básicas con listas

• Insertar -> encolar( )


• Eliminar -> desencolar( )
• Recorrido
• Consultar un elemento especifico

Estado

• Cola vacía
• Cola llena -> solo en el caso de un arreglo para cola
• Cuantos elementos hay en la cola
typedef struct _nodo {
int valor;
struct _nodo *siguiente;
} tipoNodo;

typedef tipoNodo *pNodo;


typedef tipoNodo *Cola;

/* Funciones con colas: */


void insertar(Cola *cola, Cola *fin, int v);
int sacar(Cola *cola, Cola *fin);

void insertar(Cola *cola, Cola *fin, int v) {

pNodo nuevo;

/* Crear un nodo nuevo */


nuevo = (pNodo)malloc(sizeof(tipoNodo));
nuevo->valor = v;

if(*cola == NULL){
/* Es el primer nodo de la lista */
*cola=nuevo;
}
else{
// Inserciones al final de la cola
(*fin)->siguiente=nuevo;
}
//para terminar las inserciones
*fin=nuevo;
nuevo->siguiente = NULL;
}

int sacar(Cola *cola, Cola *fin){

pNodo aux; /* variable auxiliar para manipular nodo */


int v; /* variable auxiliar para retorno */

/* Nodo apunta al primer elemento de la pila */


aux = *cola;

if(aux == NULL)
return 0; /* Si no hay nodos en la cola retornamos 0 */
else{
if(*cola != *fin)
*cola = aux -> siguiente;
else {
*cola = NULL;
*fin = NULL;
}
v = nodo->valor;
free(aux);
return v;
}//fin else
}

Вам также может понравиться