text: // Linear List Node; 
  
  #include<iostream>
  
  using std::cout; 
  using std::endl; 
  using std::cerr; 
  
  
  // -------- node --------
  /*
  	class LNode;
  	singly-linked list node;
  */
  // Constructor; 
  template<typename DataType>
  LNode<DataType>::LNode(void) :
  	m_next(nullptr)
  {
  
  }
  template <typename DataType>
  LNode<DataType>::LNode(DataType val, LNode* next) :
  	m_val(val),
  	m_next(next)
  {
  
  }
  
  // Destructor; 
  template <typename DataType>
  LNode<DataType>::~LNode(void)
  {
  
  }
  
  template <typename DataType>
  DataType LNode<DataType>::getVal(void)
  {
  	return this->m_val;
  }
  template <typename DataType>
  LNode<DataType>* LNode<DataType>::getNext(void)
  {
  	return this->m_next;
  }
  template <typename DataType>
  void LNode<DataType>::setVal(DataType newVal)
  {
  	this->m_val = newVal;
  
  	return;
  }
  template <typename DataType>
  void LNode<DataType>::setNext(LNode<DataType>* newNext)
  {
  	this->m_next = newNext;
  
  	return;
  }
  
  /*
  	class DNode;
  	doubly-linked list node;
  */
  // Constructor; 
  template <typename DataType>
  DNode<DataType>::DNode(void) :
  	m_pred(nullptr), 
  	m_next(nullptr)
  {
  
  }
  template <typename DataType>
  DNode<DataType>::DNode(DataType val, DNode* pred, DNode* next) :
  	m_pred(pred),
  	m_next(next)
  {
  	this->setVal(val);
  }
  
  // Destructor; 
  template <typename DataType>
  DNode<DataType>::~DNode(void)
  {
  
  }
  
  template <typename DataType>
  DNode<DataType>* DNode<DataType>::getPred(void)
  {
  	return this->m_pred;
  }
  template <typename DataType>
  DNode<DataType>* DNode<DataType>::getNext(void)
  {
  	return this->m_next;
  }
  template <typename DataType>
  void DNode<DataType>::setPred(DNode<DataType>* newPred)
  {
  	this->m_pred = newPred;
  
  	return;
  }
  template <typename DataType>
  void DNode<DataType>::setNext(DNode<DataType>* newNext)
  {
  	this->m_next = newNext;
  
  	return;
  }