You are on page 1of 9

1

#include<iostream> using namespace std ; struct nodo { int nro ; struct nodo *sgte; };

typedef struct nodo *TLista; void insertaAlInicio( TLista &,int); void insertaAlFinal(TLista &,int); void EliminaAlInicio(TLista &); void EliminaAlFinal(TLista &); void imprimir (TLista); int main ( void ) { TLista lista=NULL; int opc,valor,pos; do { cout<<"** Menu **"<<endl; cout<<" 1 Inserta al inicio "<<endl; cout<<" 2 Inserta al final "<<endl; cout<<" 3 Eleminar al inicio "<<endl; cout<<" 4 Eliminar al final "<<endl; cout<<" 5 Listado "<<endl; cout<<" Ingrese opcion " ; cin>>opc;

switch(opc) { case 1: cout<<endl;cout<<"Valor a insertar al inicio " ; cin>>valor; insertaAlInicio(lista,valor); break; case 2: cout<<endl; cout<<"Valor a insertar al final " ; cin>>valor; insertaAlFinal(lista,valor); break ;

case 3: cout<<endl<<"....Elimina al inicio"<<endl; EliminaAlInicio(lista); break; case 4: cout<<endl<<"....Elimina al final"<<endl; EliminaAlFinal(lista); break; case 5: cout<<endl<<"Listado"<<endl; imprimir(lista); break; }// fin del switch } while(opc !=6); }

void imprimir(TLista lista ) { while (lista !=NULL) { cout<<lista->nro<<endl; lista=lista->sgte; } cout<<endl; }

void insertaAlInicio(TLista &lista,int valor ) { TLista q ; q=new(struct nodo); q->nro =valor ; q->sgte=lista; lista=q; } void insertaAlFinal(TLista &lista,int valor) { TLista t,q=new(struct nodo); q->nro=valor ; q->sgte=NULL;

if(lista==NULL) lista=q; else { t=lista; while (t->sgte!=NULL) t=t->sgte; t->sgte=q; } }

void EliminaAlInicio(TLista &lista) {

struct nodo *p; if(lista !=NULL) { p=lista ; lista=lista->sgte; delete(p); } } void EliminaAlFinal(TLista &lista) { TLista p, ant; if(lista ==NULL) return ; p=lista; if(lista->sgte==NULL) lista =lista->sgte; else { while(p->sgte!=NULL) { ant =p; p=p->sgte; } ant->sgte=NULL; } delete(p); }

2 .Implementar un programa para una lista circular con 10 elementos.


#include<iostream> using namespace std ; struct nodo { int nro; //*** con campo numero y //* Declaramos una estructura de tipo nodo

struct nodo *sgte; //**** otro camopo , un puntero siguiente };

typedef struct nodo *TListaC;

// Declaramos un tipo lista

void insertaAlFinalC(TListaC &,int ); // funcion de insertar void imprimir(TListaC); int main (void) { TListaC listaC=NULL; // declaramos a lista que inicie sin nada // declaracion de variables // funcion de mostrar

int i,n,valor ;

cout<<"Numero de elementos : " ; cin>>n ; for(i=0;i<n;i++) // un for hasta que sea menor o igual que 10

cout<<"Valor :"; cin>>valor ; insertaAlFinalC(listaC, valor); // llama a la funcion insertar } imprimir(listaC); return 0; } // llama a la funcion mostrar

void insertaAlFinalC(TListaC &listaC, int valor) { TListaC t,q=new(struct nodo); q->nro=valor; // declaramos a " t" , y a q que hara un nuevo nodo

// q en el campo nro toma a valor

if(listaC==NULL) listaC=q; else { t=listaC;

// si la lista esta vacia ; lista es igual a q

// simo t es igual lista

while(t->sgte!=listaC) t=t->sgte; // mientras t en campo sgte sea diferente de lista t->sgte=q; } q->sgte=listaC; } // q en el campo sgte = a lista // hacer que t = a t en el campo siguiente

void imprimir(TListaC listaC) { TListaC q=listaC , t=NULL; while(t!=listaC) { cout<<q->nro<<endl; q=q->sgte; t=q; } cout<<endl; } // mostrar q en el campo numero // q es igual a q en el campo siguiente // t toma en valor del ultimo numero // declarmos a q como lista y a t en vacio // mientras t sea diferente de lista

4.#include<iostream> using namespace std ; struct nodo { int nro; struct nodo *sgte; }; typedef nodo *ptrPila; void imprimir(ptrPila); void eliminarPila(ptrPila & ); void push (ptrPila &,int); int pop(ptrPila &); int main (void) { ptrPila p=NULL; int opc , n ; do { cout<<endl<<" *** Menu ***" <<endl; cout<<" 1 .- Apilar "<<endl; cout<<" 2 .- Desapilar "<<endl; cout<<" 3 .- Ver Pila "<<endl; cout<<" 4.- Destruir Pila "<<endl; cout<<" 5 .- Salir "<<endl<<endl; cout<<"Ingrese opcion : " ; cin>>opc ; switch(opc) { case 1: cout<<endl;cout<<"Apilar valor " ; cin>>n; push(p,n);

break; case 2: if(p!=NULL) cout<<endl; cout<<"Valor eleminado : " ; n=pop(p); cout<<n<<endl; break ; case 3: cout<<endl; cout<<"Contenido de Pila : "<<endl; imprimir(p); break; case 4: cout<<endl; eliminarPila(p); cout<<"Pila destruida " <<endl; break; }// fin de awitch

} while(opc!=5); } void push(ptrPila &p,int n) { ptrPila q=new (struct nodo); q->nro=n; q->sgte=p; p=q; }

int pop(ptrPila &p) {

int n =p->nro; ptrPila q=p; p=p->sgte; delete (q); return n ; }

void eliminarPila(ptrPila&p) {

ptrPila q; while(p!=NULL) { q=p; p=p->sgte; delete(q); } }

void imprimir(ptrPila p) { while(p!=NULL) { cout<<p->nro<<endl; p=p->sgte; } cout<<endl; }

You might also like