Ver Mensaje Individual
  #1 (permalink)  
Antiguo 21/04/2013, 04:38
Lotux5
 
Fecha de Ingreso: enero-2013
Mensajes: 25
Antigüedad: 12 años
Puntos: 0
Error con clase de listas enlazadas.

Mi problema es que no me entero mucho de como hacer listas enlazadas por lo que queria saber si me podian ayudar con este ejercicio, que no me funciona. Gracias.


Código C++:
Ver original
  1. #include <iostream>
  2. #include "Lista.h"
  3.  
  4. using namespace std;
  5.  
  6. Lista :: Lista (void){
  7.  
  8.     p=0;
  9.     numnodos=0;
  10.    
  11. }
  12.  
  13. Lista :: Lista (int nnodos){
  14.  
  15.     numnodos=nnodos;   
  16.  
  17.     for (int i=0; i<nnodos; i++){
  18.         l nuevo = new Nodo;
  19.         nuevo->valor = 0;
  20.         nuevo->siguiente = p;
  21.         p=nuevo;
  22.     }
  23.    
  24. }
  25.  
  26. Lista :: Lista (int nnodos, TipoBase val){
  27.    
  28.     numnodos=nnodos;   
  29.  
  30.     for (int i=0; i<nnodos; i++){
  31.         l nuevo = new Nodo;
  32.         nuevo->valor = val;
  33.         nuevo->siguiente = p;
  34.         p=nuevo;
  35.     }
  36. }
  37.  
  38. Lista :: ~Lista (void){
  39.  
  40.     delete p;
  41.    
  42. }
  43.  
  44. int Lista :: NNodos(void){
  45.  
  46.     return(numnodos);
  47.  
  48. }
  49.  
  50. bool Lista  :: EstaVacia(){
  51.     if (p==0)
  52.         return (true);
  53.  
  54.     else
  55.         return false;
  56. }
  57.  
  58. Lista Lista :: EscribirLista (void){
  59.  
  60.     l nuevo;
  61.     TipoBase val;
  62.     int n = NNodos();
  63.  
  64.     for (int i=0; i<n; i++){
  65.     cout << "Introduce un valor: ";
  66.     cin >> val;
  67.     nuevo->valor=val;
  68.     nuevo->siguiente=p;
  69.     p=nuevo;
  70.     }
  71. }
  72.  
  73. void Lista :: Insertar (TipoBase val, int pos){
  74.  
  75.     l nuevo;
  76.     int n = NNodos();
  77.    
  78.     for (int i=0; i<n; i++){   
  79.         if (n==pos)
  80.             nuevo->valor=val;
  81.         nuevo->siguiente=p;
  82.         p=nuevo;       
  83.     }
  84. }
  85.            
  86. TipoBase Lista :: ObtenerValor (int pos){
  87.  
  88.     l nuevo;
  89.     int n = NNodos();
  90.  
  91.     for (int i=0; i<n; i++){
  92.         if (n==pos)
  93.             cout << nuevo->valor << endl;
  94.         nuevo->siguiente=p;
  95.         p=nuevo;
  96.     }
  97.    
  98. }

Código C++:
Ver original
  1. #ifndef LISTA
  2. #define LISTA
  3.  
  4. #include <iostream>
  5. using namespace std;
  6.  
  7. typedef double TipoBase;
  8.  
  9. class Lista{
  10.  
  11.     private:
  12.        
  13.         struct Nodo{
  14.             TipoBase valor;
  15.             Nodo *siguiente;
  16.             };
  17.         typedef Nodo *l;
  18.         l p;
  19.         int numnodos;      
  20.  
  21.     public:
  22.         Lista (void);
  23.         Lista (int nnodos);
  24.         Lista (int nnodos, TipoBase val);
  25.         ~Lista (void);
  26.         int NNodos(void);
  27.         bool EstaVacia (void);
  28.         Lista EscribirLista (void);
  29.         void Insertar (TipoBase val, int pos);
  30.         void Borrar (int pos);
  31.         TipoBase ObtenerValor (int pos);
  32. };
  33.  
  34.  
  35.  
  36. #endif