www.pudn.com > compressor.zip > ListNode.h


#ifndef LIST_NODE_CLASS 
#define LIST_NODE_CLASS 
 
#include  
 
template  
class LinkedList;				 
 
template  
class HashTable;					 
 
template  
class ListNode 
{ 
	friend class LinkedList;	 
	friend class HashTable; 
private:	 
	ListNode* link; 
 
public: 
	T data; 
 
	ListNode(const T& item, ListNode* next = NULL) 
		:data(item), link(next) 
	{} 
 
	friend ostream&  operator << (ostream& os,  
		                         const ListNode& node); 
	 
	friend ofstream& operator << (ofstream& ofs,  
		                          const ListNode& node); 
 
	friend ostream& operator << (ostream& os,  
								 const LinkedList& list); 
 
	friend ofstream& operator << (ofstream& ofs,  
								  const LinkedList& list); 
}; 
 
template  
ostream& operator << (ostream& os, const ListNode& node) 
{ 
	os << setw(20) << "current node: " << &node << endl 
	   << node.data 
	   << setw(20) << "next node: " << node.link << endl; 
	return os; 
} 
 
template  
ofstream& operator << (ofstream& ofs, const ListNode& node) 
{ 
	ofs << node.data << endl; 
	return ofs; 
} 
 
#endif