用c++实现了汉诺塔,使用了递归,使用了上一次实现的堆栈这个数据结构来实现的汉诺塔,下面是代码:
stack.h
//
// main.cpp
// StackDemo
//
// Created by xin wang on 4/15/15.
// Copyright (c) 2015 xin wang. All rights reserved.
//
#include <iostream>
class OutOfBounds{//越界异常
public:
OutOfBounds(){
std::cout<<"Out Of Bounds!"<<std::endl;
}
};
//没有空间再进行new操作
class NoMem{
public:
NoMem(){
std::cout<<"No Memory!"<<std::endl;
}
};
template <class T>
class Stack{
public:
Stack(int MaxSize=10);//定义最大长度是10的数组
~Stack(){delete [] stack;}//删除定义的数组
bool IsEmpty()const {return top == -1;}//判断是否为空
bool IsFull() const{return top == MaxTop;}//判断是否是满
T Top()const;
void output();//输出堆栈里的元素
Stack<T>& Add(const T& x);//忘堆栈里面添加元素
Stack<T>& Delete(T& x);//从堆栈里面删除元素
private:
int top;
in