text: #ifndef HEADER_BOOK
  #define HEADER_BOOK
  
  #define DEFAULT_SIZE 99999
  
  #include <string>
  using namespace std;
  
  struct Book//图书对象
  {
      long long isbn;//书号13位
      string name, author;//名字，作者
      int available, storage;//库存，总量
      int height, child, balance;//高度，孩子，平衡因子
      int left,right,parent;//左子树，右子树，父亲
      Book();//初始化
  };
  
  class bookDataBase//图书库对象
  {
    private:
      int root;//根结点
      int total;//最大图书量
      int avail;//可用结点
      Book *bookcase;//图书库数组
      void updateBook(int cur);//更新图书结点信息
      void balanceBook(int cur);//平衡图书节点
      void connect34(int parent, int c,  int a,  int b, 
                     int t1,     int t2, int t3, int t4);//进行二次旋转函数
      void findBook(int cur,long long isbn,int &target,int &parent);//找到图书，内部使用
    public:
      int availBook() const;//返回节点总数
      bookDataBase(int x=DEFAULT_SIZE);//初始化
      ~bookDataBase();//销毁
      int findBook(long long isbn);//找到图书，外部使用
      bool insertBook(long long isbn,string name,string author,int available=1,int storage=1);//新增图书
      void inorderTraversal(void (*visit)(Book&));//中序遍历
      Book& operator[](int x);//下标访问接口
  };
  
  #endif
  