Here are the compiler errors:
Code:
1>------ Build started: Project: Linked List 2, Configuration: Debug Win32 ------
1> Linked List 2.cpp
1>c:\users\owner\documents\visual studio 2010\projects\linked list 2\linked list 2\linked list 2.cpp(47): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1> c:\users\owner\documents\visual studio 2010\projects\linked list 2\linked list 2\linked list 2.cpp(61) : see reference to class template instantiation 'list<NODETYPE>' being compiled
1>c:\users\owner\documents\visual studio 2010\projects\linked list 2\linked list 2\linked list 2.cpp(47): warning C4183: 'LIST': missing return type; assumed to be a member function returning 'int'
1>c:\users\owner\documents\visual studio 2010\projects\linked list 2\linked list 2\linked list 2.cpp(48): error C2523: 'list<NODETYPE>::~LIST' : destructor tag mismatch
1>c:\users\owner\documents\visual studio 2010\projects\linked list 2\linked list 2\linked list 2.cpp(67): error C2039: '{ctor}' : is not a member of 'List<NODETYPE>'
1>c:\users\owner\documents\visual studio 2010\projects\linked list 2\linked list 2\linked list 2.cpp(90): error C2039: '{dtor}' : is not a member of 'List<NODETYPE>'
1>c:\users\owner\documents\visual studio 2010\projects\linked list 2\linked list 2\linked list 2.cpp(104): error C2039: 'insertAtFront' : is not a member of 'List<NODETYPE>'
1>c:\users\owner\documents\visual studio 2010\projects\linked list 2\linked list 2\linked list 2.cpp(118): error C2039: 'insertAtBack' : is not a member of 'List<NODETYPE>'
1>c:\users\owner\documents\visual studio 2010\projects\linked list 2\linked list 2\linked list 2.cpp(121): error C2065: 'NODETYPLE' : undeclared identifier
1>c:\users\owner\documents\visual studio 2010\projects\linked list 2\linked list 2\linked list 2.cpp(121): error C2065: 'value' : undeclared identifier
1>c:\users\owner\documents\visual studio 2010\projects\linked list 2\linked list 2\linked list 2.cpp(138): error C2039: 'removeFromFront' : is not a member of 'List<NODETYPE>'
1>c:\users\owner\documents\visual studio 2010\projects\linked list 2\linked list 2\linked list 2.cpp(284): fatal error C1075: end of file found before the left brace '{' at 'c:\users\owner\documents\visual studio 2010\projects\linked list 2\linked list 2\linked list 2.cpp(142)' was matched
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
Code:
#include "stdafx.h"
#ifndef LISTNODE_H
#define LISTNODE_H
#include <iostream>
using std::cout;
template< typename NODETYPE > class List;
template< typename NODETYPE>
class ListNode
{
friend class List< NODETYPE>;
public:
ListNode( const NODETYPE & );
NODETYPE getData() const;
private:
NODETYPE data;
ListNode< NODETYPE > *nextPtr;
};
template< typename NODETYPE>
ListNode< NODETYPE >::ListNode( const NODETYPE &info )
: data( info ), nextPtr( 0 )
{
}
template< typename NODETYPE >
NODETYPE ListNode< NODETYPE >::getData() const
{
return data;
}
#endif
template< typename NODETYPE >
class list
{
public:
LIST();
~LIST();
void insertAtFront( const NODETYPE & );
void insertATBack( const NODETYPE & );
bool removeFromFront( NODETYPE & );
bool removeFromBack( NODETYPE & );
bool isEmpty() const;
void print() const;
private:
ListNode< NODETYPE > *firstPtr;
ListNode< NODETYPE > *lastPtr;
ListNode< NODETYPE > *getNewNode( const NODETYPE & );
};
template< typename NODETYPE >
List< NODETYPE >::List()
: firstPtr( 0 ), last Ptr( 0 )
{
}
template< typename NODETYPE >
List< NODETYPE >::~List()
{
if ( !isEmpty() )
{
cout << "Destroying nodes ...\n";
ListNode< NODETYPE > *currentPtr = firstPtr;
ListNode< NODETYPE > *tempPtr;
while ( CurrentPtr != 0 )
{
tempPtr = currentPtr;
cout << tempPtr->data << '\n';
currentPtr = currentPtr->nextPtr;
delete tempPtr;
}
}
cout << "All nodes destroyed\n\n";
}
template< typename NODETYPE >
void List< NODETYPE >::insertAtFront ( const NODETYPE &value )
{
ListNode< NODETYPE > *newPtr = getNewNode( value );
if ( isEmpty() )
firstPtr = lastPtr = newPtr;
else
{
newPtr->nextPtr = firstPtr;
firstPtr = newPtr;
}
}
template< typename NODETYPE >
void List< NODETYPE >::insertAtBack( const NODETYPE &VALUE)
{
ListNode< NODETYPE > *newPtr = getNewNode( value );
if( isEmpty() )
firstPtr = lastPtr = newPtr;
else
{
lastPtr->nextPtr = newPtr;
lastPtr = newPtr;
}
}
template< typename NODETYPE >
bool List< NODETYPE >::removeFromFront( NODETYPLE &value )
{
if ( isEmpty() )
return false;
else
{
ListNOde< NODETYPE > *tempPtr = firstPtr;
if ( firstPtr == lastPtr )
firstPtr = lastPtr = 0;
else
firstPtr = firstPtr->nextPtr;
value = tempPtr->data;
delete tempPtr;
return true;
}
}
template< typename NODETYPE >
bool List< NODETYPE >::removeFromBack( NODETYPE &value )
{
if ( isEmpty() )
return false;
else
{
ListNode< NODETYPE > *tempPtr = lastPtr;
if(firstPtr == lastPtr )
firstPtr = lastPtr = 0;
else
{
ListNOde< NODETYPE > *tempPtr = lastPTr;
if ( firstPtr == LastPtr )
firstPtr = lastPtr = 0;
else
{
ListNode< NODETYPE > *currentPtr = firstPtr;
while ( currentPtr->nextPtr != lastPtr )
currentPtr = currentPtr->nextPtr;
lastPtr = currentPtr;
currentPtr->nextPtr = 0;
}
value = tempPtr->data;
delete tempPtr;
return true;
}
}
template< typename NODETYPE >
bool List< NODETYPE >::isEmpty() const
{
return firstPtr == 0;
}
template< typename NODETYPE >
ListNode< NODETYPLE > *lIST< nodetype >::getNewNode( const NODETYPE &value )
{
return new ListNOde< NODETYPE >(value );
}
template< typename NODETYPE >
void List< NODETYPE >::print() const
{
if ( isEmpty() )
{
cout << "The list is empty\n\n";
return;
}
ListNode< NODETYPE > *currentPtr = firstPtr;
cout << "The list is: ";
while ( currentPtr != 0 )
{
cout << currentPtr->data << ' ' ;
currentPtr = currentPtr->nextPtr;
}
cout << "\n\n";
}
//#endif
template< typename T >
void testList( List < T > &listObject, const string &typeName )
{
cout << "Testing a List of " << typeName << " values\n";
instructions();
int choice;
T value;
do
{
cout << "? ";
cin >> choice;
switch(choice)
{
case 1:
cout << "Enter " << typeName << ": ";
cin >> value;
listObject.insertAtFront( value );
listObject.print();
break;
case 2:
cout << "Enter " << typeName << ": ";
cin >> value;
listObject.insertAtBack( value );
listObject.print();
break;
case 3:
if ( listObject.removeFromFront( value ) )
cout << value << " removed from list\n";
listObject.print();
break;
case 4:
if ( listObject.removeFromBack( value ) )
cout << value << " removed from list\n";
listObject.print();
break;
}
} while (choice != 5 );
cout << "End list test\n\n";
}
void instructions()
{
cout << "Enter one of the following:\n"
<< " 1 to insert at beginning of list\n"
<< " 2 to insert at end of list\n"
<< " 3 to delete from beginning of list\n"
<< " 4 to delete from end of list\n"
<< " 5 to end list processing\n";
}
int _tmain(int argc, _TCHAR* argv[])
{
List< int > integerList;
testList( integerList, "integer" );
List< double > doubleList;
testList( doubleList, "double" );
return 0;
}
Anyone able to give me a few pointers?