Please finish the NONRECURSIVE TOWER OF HANOI c code for the
Please finish the NON-RECURSIVE TOWER OF HANOI c++ code for the parts signalled by //
#include <iostream>
#include<vector>
 // NOTE: This program uses the vector container from the stl.
 using namespace std;
 void main(){
 vector<int> t[3]; // three towers A,B,C represented as an array of 3 vectors
 int n, candidate,to, from, move=0; // move counts the move number
 cout<<\"Please enter an ODD number of rings to move: \";
 cin>>n;
 cout<<endl;
 //intitialize the 3 towers
 for(int i=n+1;i>=1;i--)
 t[0].push_back(i);
 t[1].push_back(n+1);
 t[2].push_back(n+1);
 // initialize towers and candidate
 from=0;
 to=1;
 candidate=1;
 
 while( t[1].size()<n+1){ // there are still rings to transfer to tower B = t[1]
 //write it
 cout<<\"move number \"<<++move<<\": Transfer ring <<candidate<<
 \" from tower \"<< char(from+65)<<\" to tower \"<<char(to+65)<<endl;
 //do it: move the disks around
 1. Push the top of the “from” tower to the “to” tower
 2. Remove the ring from the “from” tower
 //get next “from tower” It’s not the most recent “to” – so which is it?
 if( )
 from= ;   //
 else
 from= ; //
 // get next “to tower”
 if( ) //
 to= ;   //
 else
 to= ;   //
 //get next candidate
 candidate= ; // it’s on the top of the current “from tower”
 }
 }
Solution
#include <iostream>
 #include<vector>
 // NOTE: This program uses the vector container from the stl.
 using namespace std;
 int i ();{
 vector<int> t[3]; // three towers A,B,C represented as an array of 3 vectors
 int n, candidate,to, from, move=0; // move counts the move number
 cout<<\"Please enter an ODD number of rings to move: \";
 cin>>n;
 {
 cout<<endl;
 //intitialize the 3 towers
 for(int i=n+1;i>=1;i--)
 t[0].push_back(i);
 t[1].push_back(n+1);
 t[2].push_back(n+1);
 // initialize towers and candidate
 from=0;
 to=1;
 candidate=1;
while( t[1].size()<n+1){ // there are still rings to transfer to tower B = t[1]
 //write it
 cout<<\"move number \"<<++move<<\": Transfer ring <<candidate<<\"
 \" from tower \"<< char(from+65)<<\" to tower \"<<char(to+65)<<endl;
 //do it: move the disks around
 1. Push the top of the from tower to the to tower
 2. Remove the ring from the from tower
 //get next “from tower” It’s not the most recent “to” – so which is it?
 if( )
 from= ; //
 else
 from= ; //
 // get next “to tower”
 if( ) //
 to= ; //
 else
 to= ; //
 //get next candidate
 candidate= ; // it’s on the top of the current “from tower”
 }
 }


