/* ****************************** "list.h" Listクラス−インタフェイス部 生成元の積で表現されたブレイド ****************************** */ #if !defined(___Class_List) #define ___Class_List class Cell{ friend class List; friend class Canonical; int element; // 要素 Cell* pre; // 前のセルへのポインタ Cell* next; // 次のセルへのポインタ }; // 双方向連結リスト class List{ int num; // 紐の本数 Cell* init; // 最初のセルへのポインタ Cell* last; // 最後のセルへのポインタ public: List(void); // 最初と最後のダミーセルを作成 List(int); // 最初と最後のダミーセルを作成,numを設定 int Num(void){ return num; } // 紐の本数を返す int Element(Cell* p){ return p->element; } // pの指すセルの要素を返す Cell* Init(void){ return init; } // 最初のセルへのポインタを返す Cell* Last(void){ return last; } // 最後のセルへのポインタを返す Cell* Pre(Cell* p){ return p->pre; } // 前のセルへのポインタを返す Cell* Next(Cell* p){ return p->next; } // 次のセルへのポインタを返す void Set_num(int n){ num=n; } // numを設定 void Set_element(Cell* p,int x){ p->element=x; } // pの指すセルの要素を設定 void Ref_init(Cell*); // リストの参照:initの指すセルを設定 void Ref_last(Cell*); // リストの参照:lastの指すセルを設定 void Insert(Cell*,int); // セルを挿入 void Insert(Cell*,List&); // 複数のセルを挿入 void Delete(Cell*); // セルを削除 void Delete(Cell* p,Cell* q); // 複数のセルを削除 void Clear(void); // リストの全要素を削除 void Swap(Cell*,Cell*); // セルの要素を交換 bool Empty(void); // リストが空であるかどうかの判定 }; #endif