porque aparece Id returned 1 exit status??? (solucionado)

Iniciado por berbash116, 1 Enero 2019, 23:46 PM

0 Miembros y 1 Visitante están viendo este tema.

berbash116

hola como estan?, hace un tiempo mi profesor nos dio este programa sin decirnos la gran cosa solo dijo "intenten ejecutarla para antes del examen", lo arregle y todo pero aun me arroja error, ojala puedan ayudarme

les dejo el programa

     // Fig. 17.4: list.h
     // Template List class definition.
     #ifndef LIST_H
     #define LIST_H
     
     #include <iostream>
     
     using std::cout;
     
   #include <new>
   #include "list"  // ListNode class definition
   
   template< class NODETYPE >
   class List {
   
   public:
      List();      // constructor
      ~List();     // destructor
      void insertAtFront( const NODETYPE & );
      void insertAtBack( const NODETYPE & );
      bool removeFromFront( NODETYPE & );    
      bool removeFromBack( NODETYPE & );    
      bool isEmpty() const;                  
      void print() const;                    
   
   private:
      List< NODETYPE > *firstPtr;  // pointer to first node
      List< NODETYPE > *lastPtr;   // pointer to last node
   
      // utility function to allocate new node
      List< NODETYPE > *getNewNode( const NODETYPE & );
   
   }; // end class List
   
   // default constructor
   template< class NODETYPE >
   List< NODETYPE >::List()
      : firstPtr( 0 ),
        lastPtr( 0 )
   {
      // empty body
   
   } // end List constructor
   
   // destructor
   template< class NODETYPE >
   List< NODETYPE >::~List()
   {
      if ( !isEmpty() ) {    // List is not empty
         cout << "Destroying nodes ...\n";
   
         List< NODETYPE > *currentPtr = firstPtr;
         List< NODETYPE > *tempPtr;
   
         while ( currentPtr != 0 ) {  // delete remaining nodes
            tempPtr = currentPtr;
            cout << tempPtr->data << '\n';
            currentPtr = currentPtr->nextPtr;
            delete tempPtr;
   
         } // end while
   
      } // end if
   
      cout << "All nodes destroyed\n\n";
   
   } // end List destructor
   
   // insert node at front of list
   template< class NODETYPE >
   void List< NODETYPE >::insertAtFront( const NODETYPE &value )
   {
      List< NODETYPE > *newPtr = getNewNode( value );
   
      if ( isEmpty() )  // List is empty
        firstPtr = lastPtr = newPtr;
   
      else {  // List is not empty
         newPtr->nextPtr = firstPtr;
         firstPtr = newPtr;
   
      } // end else
   
   } // end function insertAtFront
   
   // insert node at back of list
   template< class NODETYPE >
   void List< NODETYPE >::insertAtBack( const NODETYPE &value )
   {
      List< NODETYPE > *newPtr = getNewNode( value );
   
      if ( isEmpty() )  // List is empty
         firstPtr = lastPtr = newPtr;
   
      else {  // List is not empty
         lastPtr->nextPtr = newPtr;
         lastPtr = newPtr;
   
      } // end else
 
 } // end function insertAtBack
 
 // delete node from front of list
 template< class NODETYPE >
 bool List< NODETYPE >::removeFromFront( NODETYPE &value )
 {
    if ( isEmpty() )  // List is empty
       return false;  // delete unsuccessful
 
    else {  
       List< NODETYPE > *tempPtr = firstPtr;
 
       if ( firstPtr == lastPtr )
          firstPtr = lastPtr = 0;
       else
          firstPtr = firstPtr->nextPtr;
 
       value = tempPtr->data;  // data being removed
       delete tempPtr;
 
       return true;  // delete successful
 
    } // end else
 
 } // end function removeFromFront
 
 // delete node from back of list
 template< class NODETYPE >
 bool List< NODETYPE >::removeFromBack( NODETYPE &value )
 {
    if ( isEmpty() )
       return false;  // delete unsuccessful
 
    else {
       List< NODETYPE > *tempPtr = lastPtr;
 
       if ( firstPtr == lastPtr )
          firstPtr = lastPtr = 0;
       else {
          List< NODETYPE > *currentPtr = firstPtr;
 
          // locate second-to-last element            
          while ( currentPtr->nextPtr != lastPtr )    
             currentPtr = currentPtr->nextPtr;        
 
          lastPtr = currentPtr;
          currentPtr->nextPtr = 0;
 
       } // end else
 
       value = tempPtr->data;
       delete tempPtr;
 
       return true;  // delete successful
 
    } // end else
 
 } // end function removeFromBack
 
 // is List empty?
 template< class NODETYPE >
 bool List< NODETYPE >::isEmpty() const
 {
    return firstPtr == 0;
   
 } // end function isEmpty
 
 // return pointer to newly allocated node
 template< class NODETYPE >
 List< NODETYPE > *List< NODETYPE >::getNewNode(
    const NODETYPE &value )
 {
    return new List< NODETYPE >( value );
 
 } // end function getNewNode
 
 // display contents of List
 template< class NODETYPE >
 void List< NODETYPE >::print() const
 {
    if ( isEmpty() ) {
       cout << "The list is empty\n\n";
       return;
 
    } // end if
 
    List< NODETYPE > *currentPtr = firstPtr;
 
    cout << "The list is: ";
 
    while ( currentPtr != 0 ) {
       cout << currentPtr->data << ' ';
       currentPtr = currentPtr->nextPtr;
 
    } // end while
 
    cout << "\n\n";
 
 } // end function print

 #endif

MAFUS

No es un  programa, es la definición de una clase para manejar una lista.
Lo que ves es un fallo del enlazador, le debe faltar algo para terminar de enlazar.
Por otra parte: la líne #include "list" parece que sobra. Se intenta incluir un archivo llamado list, que se encuentra en el mismo directorio que éste. Pero este se debe llamar list.h, así que creo que es un fallo intencionado que os ha introducido el profesor. Quien sabe.

berbash116