// Chad W. Thoenen // cs2003 Lab Section : L3 // March 6, 2003 // sahasa@ens.utulsa.edu // Lab 8: lab8.java -- Use a Stack to simulate recursion for the Towers of Hanoi Problem //package lab_8; import java.io.*; import java.util.*; public class lab8 { private int count; private String source, dest, spare; private StackArrayBased sstack; public static void main( String arg[]) { StackArrayBased s = new StackArrayBased(); System.out.println(); System.out.println("3 A B C"); solveTowers(s, 3, "A", "B", "C"); System.out.println(); System.out.println("5 A B C"); solveTowers(s, 5, "A", "B", "C"); } public lab8() { sstack = null; count = 0; source = ""; dest = ""; spare = ""; } public lab8(Stack s, int c, String s1, String s2, String s3) { sstack = s; count = c; source = s1; dest = s2; spare = s3; } public static void solveTowers( Stack sstack, int count, String source, String dest, String spare) { int cnt = 0; if (sstack.isEmpty()) { lab8 i = new lab8(sstack, count, source, dest, spare); sstack.push(i); } lab8 temp = new lab8(); lab8 x = new lab8(); while (!sstack.isEmpty()) { temp = (lab8)sstack.peek(); if (temp.count > 1) { temp = (lab8)sstack.pop(); lab8 o = new lab8(sstack, (temp.count - 1), temp.spare, temp.dest, temp.source); sstack.push(o); o = new lab8(sstack, 1, temp.source, temp.dest, temp.spare); sstack.push(o); o = new lab8(sstack, (temp.count - 1), temp.source, temp.spare, temp.dest); sstack.push(o); } else if (temp.count == 1) { temp = (lab8)sstack.pop(); System.out.println("Move top disk from pole " + temp.source + " to pole " + temp.dest); } } } }