How to compile this program.. T__T

My Lecturer give me an assignment.. to compile a program using linklist.. but im being frustated to make this program run.. can anybody help me whats wrong with my program..

this is my program code :
// listnode.h
// Template ListNode class definition.
#ifndef LISTNODE_H
#define LISTNODE_H

// forward declaration of class List
template< class NODETYPE > class List;

template< class NODETYPE >
class ListNode {
friend class List< NODETYPE >; // make List a friend

public:
ListNode( const NODETYPE & ); // constructor
NODETYPE getData() const; // return data in node

private:
NODETYPE data; // data
ListNode< NODETYPE > *nextPtr; // next node in list

}; // end class ListNode

// constructor
template< class NODETYPE >
ListNode< NODETYPE >::ListNode( const NODETYPE &info )
: data( info ),
nextPtr( 0 )
{
// empty body

} // end ListNode constructor

// return copy of data in node
template< class NODETYPE >
NODETYPE ListNode< NODETYPE >::getData() const
{
return data;

} // end function getData

#endif



==============

// list.h
// Template List class definition.
#ifndef LIST_H
#define LIST_H

#include <iostream>

using std::cout;

#include <new>
#include "listnode.h" // 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:
ListNode< NODETYPE > *firstPtr; // pointer to first node
ListNode< NODETYPE > *lastPtr; // pointer to last node

// utility function to allocate new node
ListNode< 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";

ListNode< NODETYPE > *currentPtr = firstPtr;
ListNode< 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 )
{
ListNode< 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 )
{
ListNode< 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 {
ListNode< 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 {
ListNode< NODETYPE > *tempPtr = lastPtr;

if ( firstPtr == lastPtr )
firstPtr = lastPtr = 0;
else {
ListNode< 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 >
ListNode< NODETYPE > *List< NODETYPE >::getNewNode(
const NODETYPE &value )
{
return new ListNode< 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

ListNode< 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

===================

// thelist.cpp
// List class test program.
#include <iostream>

using std::cin;
using std::endl;

#include <string>

using std::string;

#include "list.h" // List class definition

// function to test a List
template< class T >
void testList( List< T > &listObject, const string &typeName )
{
cout << "Testing a List of " << typeName << " values\n";

instructions(); // display 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;

} // end switch

} while ( choice != 5 ); // end do/while

cout << "End list test\n\n";

} // end function testList

// display program instructions to user
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";

} // end function instructions

int main()
{
// test List of int values
List< int > integerList;
testList( integerList, "integer" );

// test List of double values
List< double > doubleList;
testList( doubleList, "double" );

return 0;

} // end main

please tell me where's the mistake and give me answer how this program suppose to write..

o... and my lecturer ask me to convert the data type to string.. can anybody help me please... T__T
When you post code could you please use the code tag for keep the formatting.

How have you tried to compile this, what environment are you using and what error(s) did you receive?
c:\documents and settings\dicky\desktop\contoh1.cpp(45) : error C2143: syntax error : missing ';' before '=='

c:\program files\microsoft visual studio\vc98\include\errno.h(29) : error C2143: syntax error : missing ';' before '{'

c:\program files\microsoft visual studio\vc98\include\errno.h(29) : error C2447: missing function header (old-style formal list?)

c:\documents and settings\dicky\desktop\contoh1.cpp(57) : fatal error C1083: Cannot open include file: 'listnode.h': No such file or directory
Error executing cl.exe.

here is my error i'm compiling it using microsoft visual c++ 6.0
This compiled fine for me.
You have to admire the optimism that goes into hoping someone will take a close look at a huge blob of code without any formatting.
The error messages speak clearly so have you checked?
Topic archived. No new replies allowed.