Está en la página 1de 8

Practica 05. Estructuras de datos lineales: Pila y cola.

Objetivo:

Revisarás las definiciones, características, procedimientos y ejemplos de las estructuras lineales Pila
y Cola, con la finalidad de que comprendas sus estructuras y puedas implementarlas.

Ejercicio:
Programa de Nodo.h:

#include <stdlib.h>

struct Nodo_

int Dato;

struct Nodo_ *Sig;

};

typedef struct Nodo_ Nodo;

Nodo* initNodoD(int Dato)

Nodo *n= (Nodo*)malloc(sizeof(Nodo));

n->Dato= Dato;

n->Sig= NULL;

return n;

Nodo* initNodoDS( int Dato, Nodo *Sig)

Nodo *n= (Nodo*)malloc(sizeof(Nodo));

n->Dato= Dato;

n->Sig= Sig;

return n;

}
Programa de Lista.h:

#include "nodo.h"

struct Lista_

Nodo *head;

Nodo *tail;

size_t length;

};

typedef struct Lista_ Lista;

Lista * initList()

Lista *l = (Lista*)malloc(sizeof(Lista));

l->head = NULL;

l->tail = NULL;

l->length = 0;

void insertarP(Lista *l, int Dato)

Nodo * aux= initNodoDS( Dato, l->head);

if (l->length ==0 )

l->tail=aux;

l->head=aux;

l->length++;

}
Programa de cola.h:

#include "Nodo.h"

struct Cola_{

Nodo *head;

Nodo *tail;

size_t size;

};

typedef struct Cola_ Cola;

Cola *initCola(){

Cola *c=(Cola*)malloc(sizeof(Cola));

c->head=NULL;

c->tail=NULL;

c->size=0;

void encolar(Cola*c,int Dato){

Cola * aux=initNodoD(Dato);

if(c->size==0){

c->head=aux;

c->tail=aux;

return;

c->tail->Sig=aux;

c->tail=aux;

c->size++;

int desencolar(Cola*c){

if(c->size==0){

int aux=c->tail->Dato;
Nodo* des=c->head;

c->head=c->head->Sig;

des->Sig=NULL;

if(c->size==1){

c->tail=NULL;

free(des);

c->size--;

return aux;

void imprimir(Cola*c){

Nodo *aux=c->head;

while(aux!=NULL){

printf("%d",aux->Dato);

aux=aux->Sig;

Programa de pila.h:

#include "Nodo.h"

struct Pila_{

Nodo *head;

Nodo *tail;

size_t size;

};

typedef struct Pila_ Pila;

Pila *initPila(){

Pila *p=(Pila*)malloc(sizeof(Pila));

p->head=NULL;
p->tail=NULL;

p->size=0;

void push(Pila*p,int Dato){

Pila *aux;

aux=initNodoDS(Dato,p->head);

p->head=aux;

p->size++;

if(p->size==1){

p->tail=aux;

int pop(Pila*p){

if(p->size==0){

int aux=p->tail->Dato;

struct Nodo* q=p->head;

p->head=p->head->Sig;

p->Sig=NULL;

if(p->size==1){

p->tail=NULL;

free(q);

p->size--;

return aux;

void imprimir(Pila*p){

Nodo *aux=p->head;

while(aux!=NULL){

printf("%d",aux->Dato);

aux=aux->Sig;
}

También podría gustarte