Program Listing for File Hanoi.h

↰ Return to documentation for file (ADS/algorithm/Hanoi.h)

/*--------------------------------------------------------------------------*/
/*------------------------------ File Hanoi.h ------------------------------*/
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
/*----------------------------- DEFINITIONS --------------------------------*/
/*--------------------------------------------------------------------------*/

#ifndef __ADS_Hanoi
 #define __ADS_Hanoi
                      /* self-identification: #endif constant */

/*--------------------------------------------------------------------------*/
/*------------------------------ INCLUDES ----------------------------------*/
/*--------------------------------------------------------------------------*/

#include "ADS/Contract.h"
#include "ADS/stack/ArrayStack.h"

#include <tuple>
#include <utility>

/*--------------------------------------------------------------------------*/
/*--------------------------- NAMESPACE ------------------------------------*/
/*--------------------------------------------------------------------------*/

namespace ADS {

/*--------------------------------------------------------------------------*/
/*------------------------------ FUNCTIONS ---------------------------------*/
/*--------------------------------------------------------------------------*/

template< class F >
void hanoi_recursive( int n , int source , int dest , int middle , F && f );

/*--------------------------------------------------------------------------*/

template< class F >
void hanoi_iterative( int n , int source , int dest , int middle , F && f );

/*--------------------------------------------------------------------------*/

template< class F >
void hanoi_iterative_labels( int n , int source , int dest , int middle ,
                             F && f );

/*--------------------------------------------------------------------------*/

}  // end( namespace ADS )

/*--------------------------------------------------------------------------*/
/*-------------------------- IMPLEMENTATION --------------------------------*/
/*--------------------------------------------------------------------------*/

#include "ADS/algorithm/impl/Hanoi.tpp"

/*--------------------------------------------------------------------------*/

#endif  /* Hanoi.h included */

/*--------------------------------------------------------------------------*/
/*---------------------------- End File Hanoi.h ----------------------------*/
/*--------------------------------------------------------------------------*/