lunes, 14 de octubre de 2013

plantilla listas simple

Plantillanodo.htm
/*
  
  Author: Carlos Martin Ramirez garcia
  Date: 14/10/13 18:46
  Description: plantilla lista ligada simpre
*/


#include "ListaR.h"
#include "ListaR.cpp"
#include "NodoR.h"
#include "NodoR.cpp"
#include<iostream>
using namespace std;
void menu();
int main()
{  
    ListaR<int> nueva;
    int muestra;nueva.ingresainicio(10);
    int x;
    int ind;
   
    int op;
    do
    {
    system("cls");
    menu();
    cout<<":";
    cin>>op;  
    switch(op) 
    {
               case 1:
                    system("cls");
                    cout<<"ingrese el dato:";
                    cin>>x;
                    nueva.ingresainicio(x);   
                    system("pause");
                    break; 
               case 2:  
                    system("cls");
                    cout<<"LISTA ACTUAL"<<endl;
                    nueva.imprimelista();                
                    cout<<"eliminar:";
                    cin>>x;
                    nueva.borranodo(x);
                    cout<<"NUEVA LISTA"<<endl;
                    nueva.imprimelista();
                    system("pause");
                    break;
               case 3:
                    system("cls");
                      nueva.~ListaR();
                      cout<<"lista borrada"<<endl;
                      system("pause");
                      break;                  
               case 4:
                    system("cls");
                    cout<<"ingrese dato:";
                    cin>>x;
                    cout<<endl;
                    cout<<"numero de posicion:";
                    cin>>ind;
                    nueva.encuertaporindice(x,ind);
                    system("pause");
                    break;
               case 5:
                    system("cls");
                    cout<<"ingrese dato:";
                    cin>>x;
                    cout<<endl;
                    muestra=nueva.regresadato(x);
                    cout<<"dato:"<<muestra;
                    system("pause");
                    break;
               case 6:
                    system("cls");
                    cout<<"ingrese el dato:";
                    cin>>x; 
                    cout<<"numero de posicion:";
                    cin>>ind;
                    nueva.ingresa(x,ind);     
                    system("pause");                
                    break;
               case 7:
                    system("cls");
                    cout<<"ingrese el dato:";
                    cin>>x;
                    nueva.ingresafinal(x); 
                    system("pause");
                    break;                   
               case 8:
                    system("cls");
                    nueva.imprimelista();
                    system("pause");
                    break;
               case 9:
                    system("cls");
                     cout <<"fin delprograma"<<endl;  
                     system("pause");           
                    break;
                    }
                    
             }while(op!=9);  
              
             
               system("pause");
               return 0;
                    
}
void menu()
{
     cout<<"---------MENU-------------------"<<endl;   
     cout<<endl;
     cout<<"1....ingresa dato al inicio"<<endl;
     cout<<endl;
     cout<<"2....elimina de la  lista"<<endl;
     cout<<endl;
     cout<<"3....borra toda la lista"<< endl;
     cout<<endl;
     cout<<"4....busca dato por posicion"<< endl;
     cout<<endl;
     cout<<"5....busca dato y muestra"<< endl;
     cout<<endl;
     cout<<"6....inserta dato"<<endl;
     cout<<endl;
     cout<<"7....ingresar dato al final"<< endl;
     cout<<endl;
     cout<<"8....muestra lista"<<endl;
     cout<<endl;
     cout<<"9....salir"<<endl;
     cout<<endl;
     cout<<"ELIJA UNA OCCION"<<endl;
     }
    


nodoR.htm
#ifndef NODOR_H
#define NODOR_H


template<class T>

class NodoR
{
      public:
             NodoR *sig;
             T dato;
             NodoR(T);
             NodoR();
             };
             #endif
             


nodoRcpp.htm



#include "NodoR.h"


#include<iostream>

template <typename T>
NodoR<T>::NodoR(T dato)
{
   this->dato=dato;
   sig=NULL;
}
template <typename T>
NodoR<T>::NodoR()
{
   dato=NULL;
   sig=NULL;
}




Nfff.htm
#ifndef LISTAR_H
#define LISTAR_H
#include "NodoR.h"
#include<iostream>
using namespace std;

template<typename T>
class ListaR
{
            public:
      NodoR<T> *primero;
      NodoR<T> *ultimo;
      ListaR(void);
      void ingresainicio(T);
      void ingresafinal(T);
      int estavacia();
      void limpia();
      int encuertaporindice(T,int);
      void imprimelista();
      void ingresa(T,int);
      int regresadato(T);
      void borranodo(T);
      ~ListaR();
      };
      #endif
      


Listarcpp.htm
#include<iostream>
using namespace std;
#include "ListaR.h"

template<typename T>
ListaR<T>::ListaR()
{
   primero=NULL;
   ultimo=NULL;
};







Listarcpp2.htm





#include<iostream>
using namespace std;
#include "ListaR.h"

template<typename T>
ListaR<T>::ListaR()
{
   primero=NULL;
   ultimo=NULL;
};



template<typename T>
void ListaR<T>::ingresainicio(T dato)
{
     NodoR<T> *nodo = new NodoR<T>(dato);
     if(estavacia())
     {
        primero=nodo;
        ultimo=nodo;
        }
        else
        {
            nodo->sig = primero;
            primero=nodo;
            }
            };
template<typename T>
void ListaR<T>::ingresafinal(T dato)
{
     NodoR<T> *nodo = new NodoR<T>(dato);
     if(estavacia())
     {
       primero = nodo;
       ultimo = nodo;
       }
       else
       {
           
           ultimo->sig=nodo;
           ultimo=nodo;
           }
           };
           
template<typename T>
int ListaR<T>::estavacia()
{
    return(primero==NULL && ultimo==NULL);
};

    
template<typename T>
void ListaR<T>::limpia()
{
     NodoR<T> *nodo,*sig=NULL;
     if(estavacia())
     {
        return;
        }
        nodo=primero;
     while(nodo!=NULL)
     {
        sig=nodo->sig;
        delete nodo;
        nodo=sig;
        }
        primero=NULL;
        ultimo=NULL;
        };
template<typename T>
int ListaR<T>::encuertaporindice(T dato,int indice)
{
    NodoR<T> *nodo;
    nodo=primero;
    int i=1;
    while(nodo!=NULL && i<indice)
    {
           nodo=nodo->sig;
           i++;
           }
           if(nodo!=NULL)
           {
               return nodo->dato;
               }
               else
               {
                   cout<<"no existe el indice:"<<i<<endl;
                   return 0Xffff;
                   }
                   };

template<typename T>
void ListaR<T>::imprimelista()
{
     NodoR<T> *nodo;
     nodo=primero;
     int i=1;
     if(estavacia())
     {
        cout<<"no existen elemento"<<endl;
        }
        else
        {
            
     while(nodo!=NULL)
     {
        cout<<"nodo "<<i<<":"<<nodo->dato<<endl;
        nodo=nodo->sig;
        i++;
        }
        }
        };
        

template<typename T>
void ListaR<T>::ingresa(T dato, int indice)
{
     NodoR<T> *nodo;
     NodoR<T> *prev=NULL;
     nodo=primero;
     int i=0;
     while(nodo!=NULL && i<indice)
     {
       prev=nodo;
       nodo=nodo->sig;
       i++;
       }
       if(nodo!=NULL)
       {
        if(nodo!=primero)
        {
         NodoR<T> *nodoNuevo = new NodoR<T>(dato);
         prev->sig=nodoNuevo;
         nodoNuevo->sig=nodo;
         }
         }
          else
          {
           if(estavacia())
           {
            ingresainicio(dato);
           }
           else
           {
            ingresafinal(dato);
           }
           }
         cout<<"el dato esta en psosicion:"<<i<<endl;
             };
                  
template<typename T>


int ListaR<T>::regresadato( T dato)
{
    NodoR<T> *nodo;
    nodo=primero;
    while(nodo!=NULL && nodo->dato!=dato)
    {
       nodo=nodo->sig;
       }
       if(nodo!=NULL)
       {
          return nodo->dato;
          }
          else
          {
          cout<<"no se encontro elevento"<<endl;
          return 0Xffffff;
          }
          };
              
              
template <typename T>
ListaR<T>::~ListaR()
{
   limpia();
}
template<typename T>
void ListaR<T>::borranodo(T dato)
{
     NodoR<T> *nodo,*prev=NULL;
     nodo=primero;
     while(nodo!=NULL && nodo->dato!=dato)
     {
           prev=nodo;
           nodo=nodo->sig;
           }
           if(nodo!=NULL)
           {
                 prev->sig=nodo->sig;
                 delete nodo;
                 }
                 else if(nodo!=NULL && prev==NULL)
                 {
                      primero=nodo->sig;
                      delete nodo;
                      }
                      };
                      
                 
                     
                     
                 
                               
              
            

No hay comentarios:

Publicar un comentario